0

编辑 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="&#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>

在此处输入图像描述

4

3 回答 3

1

提供了一个不错的设施...图像按钮...

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

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

您可以将 ImageButton 当作普通按钮处理

尝试实现这个......

于 2013-03-22T18:19:46.380 回答
0

我发现您不能指定负填充,因此解决方案是使字体本身更大,几乎一直到填充开始的地方。这意味着 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...

这使我可以在不创建新图像和所有背景的情况下更改字体和按钮的大小,并且可以正常工作。

在此处输入图像描述

于 2013-03-28T15:22:44.617 回答
0

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

于 2013-03-22T16:23:24.380 回答