我有一个Android应用程序,用户可以在其中创建基本上是宏的宏,并用一些文本标记该宏。然后我用它们的描述性文本为它们创建一个按钮。该按钮是一个扩展Button
的自定义视图。在构造函数中,我按如下方式设置布局:
this.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT));
然后将这些按钮放在GridView
内。从功能上讲,它按预期工作,但我遇到了布局问题。
如果文本太长,它将断开并换行到下一行,从而在保持恒定宽度的同时增加按钮的高度。问题在于文本如何包装,它会在一个单词的中间打破,而不是优雅地包装在空白处。例如,测试"执行动作"将呈现为
Perform an Ac
tion
理想情况下,我想优雅地在空白处包裹,而不是在行间打破单词。我想我可以通过检查文本的长度和字体与按钮的宽度,然后自己做一些花哨的新行插入来做到这一点,但这给了我创造winback用户界面的创伤闪回。还有更好的方法吗?
答案 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>