1

下面的草图说明了我的问题。 在此处输入图像描述

顶部草图是内容、填充和边框的标准模型。我想要的显示在底部草图中。我想制作一个字母周围几乎没有多余空间的按钮,可以全部是大写。我能用标准的东西做的最好的事情是填充设置为 0 的中间草图。我发布了一个关于如何获得负填充的问题,但它没有在 Android 中定义,所以它已经过时了。我可以做图像按钮,但是对于我的特定问题有一组要求,这使得我需要在按下按钮时更改按钮中的文本,并在按钮有时更改背景颜色重点。

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

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

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

编辑添加这个:

只是为了澄清。我需要以编程方式更改文本。例如,按钮显示“ON”,按下时显示“OFF”。我使用蓝牙遥控器,因此需要在按钮获得焦点时更改按钮背景颜色。这两个要求使使用图像成为问题。

4

2 回答 2

1

字体的问题是,要填充该区域,字体需要一直到重音区域的顶部,一直到下降区域的底部。我所做的是找到了一个由 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-28T14:49:06.873 回答
0

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

于 2013-03-23T16:30:14.500 回答