【问题标题】:bigger text in smaller button for Android适用于 Android 的较小按钮中的较大文本
【发布时间】:2013-03-22 15:32:42
【问题描述】:

编辑 4: 我通过创建一个更大的字体来解决它,它确实填充了空间。请参阅下面发布的解决方案

编辑 3: 我得出的结论是,我所说的问题无法解决。问题是字体没有填满图像空间,因为它们为像 j 这样的下行字母和大写字母上方的变音符号留出了空间。通过进一步搜索,我发现显然我需要的负填充是未定义的,因此可以做任何事情。

一种解决方案是创建填充整个图像空间的自定义字体。另一个是下面使用图像按钮的建议,但我增加的复杂性是既需要改变焦点颜色,又需要改变程序状态的基本图像,这使解决方案变得复杂,以至于我无法弄清楚。

Edit2:添加屏幕截图

编辑:在下面添加了drawable的代码。

我已经尝试了可以​​在 stackoverflow 上找到的每个示例以及 Google 的每个答案。昨晚我花了至少 3 个小时才放弃。如果有人知道答案,我当然可以在这方面使用一些帮助。

我在一个 Android 应用程序上有一些按钮,限制在于按钮只能这么大,并且其中的文本需要在明亮的日光下可读,因此它们需要很大。解决方法很明显,让文本比按钮小一个像素。换句话说,使填充变小。 android:paddingTop="-10sp" 什么都不做。我已经尝试了我能想到的一切。需要明确的是,我希望按钮内文本的顶部和底部与按钮本身的边缘之间的空间非常小。

这是我的一个按钮的示例:

            <Button
        android:id="@+id/buttonSetTgt"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/textHeader"
        android:layout_alignParentLeft="true"
        android:background="@drawable/button_start"
        android:textColor="@android:color/white"
        android:onClick="onSetTgt"
        android:paddingLeft="6sp"
        android:paddingRight="6sp"
        android:paddingTop="0sp"
        android:paddingBottom="0sp"
        android:text="&#x25CE;"
        android:textSize="@dimen/menu"
        android:textStyle="bold" />

button_start 有一些颜色和圆角定义。

显示顶部和底部的填充为零,但负数不起作用,因此 0sp 或 -10sp 是等效的。


这里是drawable的代码:

    <?xml version="1.0" encoding="utf-8"?>
<selector
    xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true" >
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="rectangle" >
         <solid android:color="#f07304"/> 
        <corners android:radius="7dp"/>
    </shape>
</item>
<item>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="rectangle">
        <solid android:color="#222222"/> 
        <corners android:radius="7dp"/>
    </shape>
</item>

【问题讨论】:

  • 试试这个,而不是使用Button 使用TextView,保持这个xml 原样,只需将Button 替换为TextView 并查看它是否提供所需的输出.
  • 我看不出与 TextView 有什么不同。这是我尝试过的,但在你的建议下我又试了一次,我很感激。我添加了 android:paddingBottom="-10sp" 和 android:paddingTop="-10sp" 但它与 0sp 相同。将 -10sp 更改为 +10sp 会使填充加倍,所以我很确定我想要的是 -10sp,但它被忽略了。
  • 我还尝试在背景可绘制对象中修改形状项内的填充。我可以增加它但不能减少它。 什么都不做,例如。正数会增加内边距。
  • button_start 是 .9.png 吗?如果是这样,它在顶部和底部使用了多少像素?
  • button_start.xml 在 res/drawable 下。

标签: android android-layout


【解决方案1】:

提供了一个不错的工具...Imagebutton...

根据需要设计图像(jpeg 或 png)...将文本放置在图像中的任何位置,只需设置 android:src="@drawable/yourimage

在这里,您将拥有您想要的外观......

你可以像普通按钮一样处理 ImageButton

尝试实现这个...

【讨论】:

  • 这听起来很有希望。谢谢。我会仔细看看的。我可能应该提到按下“@T”按钮会将文本更改为“@A”,下一次更改为“@S”,然后返回“@T”。可以通过编程方式更改图像吗?
  • 是的,当然...在此搜索更多问题...希望您能找到它...或者最好再问一个问题...但至少先尝试一下
  • 顺便说一句,如果你觉得这个合适的话,你可以投票赞成......thnx
  • 我会试试这个。有点痛苦,因为我有两种屏幕尺寸(平板电脑和手机)和许多图像,但解决方案就是解决方案。如果可行,我会将其标记为解决方案,尽管欢迎提供更多详细信息:-)
  • 这里是如何以编程方式更改图像...stackoverflow.com/questions/11802893/…
【解决方案2】:

尝试使用边距而不是填充。另外,您的按钮背景是否可绘制得足够宽以容纳文本同时保持其比例?

【讨论】:

  • 感谢您的建议。我再试一次只是为了确定。边距对按钮背景没有任何作用,无论是正面的还是负面的。我的理解是边距在按钮的背景之外。我在我的问题中添加了可绘制的代码。可绘制对象中没有宽度或高度。也许我用错了。
  • 如果只将 paddingTop 设置为 0sp 并删除 paddingBottom 会发生什么?这会带来你的文字吗?如果是这种情况,我会假设应用程序在为 Top 和 Bottom 设置时忽略填充以保留文本外观。
  • paddingTop="0sp" 和没有它是一样的。只有正数才能做任何事情。这是没有填充底线。
  • 您能否提供您的按钮现在的外观截图?
  • 我添加了页面的屏幕截图。作为参考,像“GUN”这样的旧式按钮在使用中不可读,因此较大的按钮,如“@T”。但如您所见,背景太大并触及读数。橙色的有焦点,深灰色的没有。
【解决方案3】:

我发现您不能指定负填充,因此解决方案是使字体本身更大,几乎一直到填充开始的地方。这意味着 t 字体需要填充该区域,一直到重音区域的顶部,一直到下降区域的底部。我所做的是找到了一个由 CR8Software Solutions 开发的名为 Type 3.2 的程序。您加载您最喜欢的字体并复制其中一个缩放操作以获得大约 1.56 的缩放因子,对基线和字体边缘进行一些调整并保存。我可能会变得更大一点,实际上已经超过了口音线的顶部。如果我再做一次,我会加载一个表单字符字体来真正查看字体空间在哪里。试用版可让您节省最多大约大写的 R,所以在我的情况下,我只需要几个字母就可以了。现在我将字体加载到“assets”文件夹中,并在代码的 onCreate 部分添加代码,如下所示:

    Typeface tf = Typeface.createFromAsset(this.getAssets(), "startline.ttf");
    Button button = (Button) findViewById(R.id.buttonSync);
    button.setTypeface(tf);
    Button button2 = (Button) findViewById(R.id.buttonSetTgt);
    button2.setTypeface(tf);
    etc...

这允许我更改字体和按钮的大小,而无需创建新图像和所有背景等工作正常。

【讨论】:

  • 请注意,“Gun”一词已被替换为字体字符。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-03
  • 2021-09-17
  • 2016-10-12
相关资源
最近更新 更多