是否有填充按钮内容区域的字体?

时间:2013-03-23 16:24:21

标签: android android-layout

以下草图说明了我的问题。 enter image description here

顶部草图是内容,填充和边框的标准模型。我想要的是在底部草图中显示。我想制作一个按钮,字母周围的空间非常小,可以全部为帽子。我可以用标准的东西做的最好的是中间草图,其中填充设置为0.我发布了一个关于如何获得负填充的问题,但它没有在Android中定义,所以它已经出来了。我可以做图像按钮,但是对我的特定问题有一系列要求,这使得这个问题在于我需要在按下时更改按钮中的文本,并且当按钮具有背景颜色时对焦。

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

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

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

编辑添加:

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

2 个答案:

答案 0 :(得分: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...

现在我获得了按钮的所有行为,但背景按钮紧靠字体。我比图像更喜欢这个,因为我可以轻松调整大小并更改文本,而不会为我想做的每件事创建新图像。

答案 1 :(得分:0)

您可以扩展view并将其设置为按钮background。在该视图的onDraw()方法(背景)中,您可以绘制任意大小,边距,...的文字。通过更改按钮的样式,可能