在空格中优雅地包装按钮中的文本

时间:2013-12-22 03:41:20

标签: android android-layout

我有一个Android应用程序,用户可以在其中创建基本上是宏的宏,并用一些文本标记该宏。然后我用它们的描述性文本为它们创建一个按钮。该按钮是一个扩展Button的自定义视图。在构造函数中,我按如下方式设置布局:

this.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
    LayoutParams.WRAP_CONTENT));

然后将这些按钮放在GridView内。从功能上讲,它按预期工作,但我遇到了布局问题。

如果文本太长,它将断开并换行到下一行,从而在保持恒定宽度的同时增加按钮的高度。问题在于文本如何包装,它会在一个单词的中间打破,而不是优雅地包装在空白处。例如,测试"执行动作"将呈现为

Perform an Ac
    tion

理想情况下,我想优雅地在空白处包裹,而不是在行间打破单词。我想我可以通过检查文本的长度和字体与按钮的宽度,然后自己做一些花哨的新行插入来做到这一点,但这给了我创造winback用户界面的创伤闪回。还有更好的方法吗?

3 个答案:

答案 0 :(得分:1)

您可以将此属性添加到Button的XML中,该XML将神奇地将整个文本放在一行中:

android:singleLine="true"

或者您可以在将文本插入按钮之前验证文本并检查单词的数量..如果它太长,超过25个字符,则在第二个或第三个空格上将其分解,然后将其设置为按钮。

希望我的问题是对的。

答案 1 :(得分:1)

AFAIK没有简单的方法来准确地做你想要的。使用android:singleLine="true"android:ellipsize="marquee"可以获得不错的效果。此外,由于您已经实施了自己的Button课程,请查看this question

答案 2 :(得分:0)

我有一个按钮说"关"左边有一个抽屉,但它包裹着两条线。即。

Image O
      ff

解决方案是我删除了drawablePadding样式。即。

<item name="android:drawablePadding">5dp</item>