Android 是否有一种字体可以填充按钮中的内容区域?

Android 是否有一种字体可以填充按钮中的内容区域?,android,android-layout,Android,Android Layout,下面的草图说明了我的问题。 顶部草图是内容、填充和边框的标准模型。我想要的是底部的草图。我想做一个按钮,在字母周围有很少的额外空间,可以全部大写。对于标准材质,我能做的最好的事情是中间的草图,其中填充设置为0。我发布了一个关于如何获得负填充的问题,但它在Android中没有定义,所以这是错误的。我可以做imagebuttons,但我的特殊问题有一系列要求,这使得我需要在按下按钮时更改按钮中的文本,并在按钮有焦点时更改背景颜色 我逐渐意识到,问题不在于在Android模型中设置参数,问题在于内容

下面的草图说明了我的问题。

顶部草图是内容、填充和边框的标准模型。我想要的是底部的草图。我想做一个按钮,在字母周围有很少的额外空间,可以全部大写。对于标准材质,我能做的最好的事情是中间的草图,其中填充设置为0。我发布了一个关于如何获得负填充的问题,但它在Android中没有定义,所以这是错误的。我可以做imagebuttons,但我的特殊问题有一系列要求,这使得我需要在按下按钮时更改按钮中的文本,并在按钮有焦点时更改背景颜色

我逐渐意识到,问题不在于在Android模型中设置参数,问题在于内容没有填满可用空间

我的想法是,如果有一组喷泉不允许在字体基线以下或字母上方的重音符号以下出现下降,换句话说,如果字母填充了内容区域,或者几乎填充了内容区域,那么我就自由了。显然,我可以创建自定义字体,但如果我能避免试图找到字体编辑器,并了解到我很想知道它。我已经找过了,找不到它。我检查了所有的Unicode字体,找不到它。我查看了在线字体选择器网站。我认为问题在于,我想要的字体会使连续的文本行相互碰撞或几乎碰撞

如果我需要创建自己的字体,我应该使用什么字体编辑器?也许有一种方法可以拉伸字体。我只是想知道如何获得用大写字母填充内容区域的字体

编辑以添加以下内容:


我只是想澄清一下。我需要以编程方式更改文本。例如,该按钮显示“开”,当您按下它时,它显示“关”。我使用蓝牙遥控器,所以当按钮有焦点时,需要改变按钮的背景色。这两个要求使得使用图像成为问题。

您可以扩展按钮的
视图,并将其设置为
背景。在该视图(背景)的
onDraw()方法中,您可以绘制任何大小、边距等的文本。也可以通过更改按钮的样式来实现

您可以扩展按钮的
视图,并将其设置为
背景。在该视图(背景)的
onDraw()
方法中,您可以绘制任何大小、边距等的文本。也可以通过更改按钮的样式来

字体上的问题是,要填充区域,字体需要一直到强调区域的顶部,一直到分散区域的底部。我所做的是由CR8Software Solutions发现了一个名为Type3.2的程序。加载您喜爱的字体并复制其中一个缩放操作,以获得大约1.56的缩放因子,对基线和字体边缘进行一些调整并保存它。试用版可以让你节省大约大写字母R,所以在我的情况下,我只需要几个字母就可以了。现在,我将字体加载到“资产”文件夹中,并在代码的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...

现在我了解了按钮的所有行为,但是背景按钮紧靠字体。与图像相比,我更喜欢这一点,因为我可以轻松地调整大小并更改文本,而无需为我想做的每件事创建新图像。

字体的问题是,要填充区域,字体需要一直到强调区域的顶部,一直到分散区域的底部。我所做的是由CR8Software Solutions发现了一个名为Type3.2的程序。加载您喜爱的字体并复制其中一个缩放操作,以获得大约1.56的缩放因子,对基线和字体边缘进行一些调整并保存它。试用版可以让你节省大约大写字母R,所以在我的情况下,我只需要几个字母就可以了。现在,我将字体加载到“资产”文件夹中,并在代码的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...
现在我了解了按钮的所有行为,但是背景按钮紧靠字体。我比图片更喜欢这个,因为我可以轻松地调整大小和更改文本,而无需为我想做的每件事创建新的图片