编辑 4:我通过创建一个更大的字体来解决它,一个填充空间的字体。请参阅下面发布的解决方案
编辑 3:我得出的结论是,我所说的问题无法解决。问题是字体没有填满图像空间,因为它们为像 j 这样的下行字母和大写字母上方的变音符号留出了空间。通过进一步搜索,我发现显然我需要的负填充是未定义的,因此可以做任何事情。
一种解决方案是创建填充整个图像空间的自定义字体。另一个是下面使用图像按钮的建议,但我增加的复杂性是既需要改变焦点颜色,又需要改变程序状态的基本图像,这使解决方案复杂化到我无法弄清楚的地步。
Edit2:添加了屏幕截图
编辑:在下面添加了可绘制代码。
我已经尝试了可以在 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="◎"
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>