当来自String
的{{1}}中的单词太大而无法与之前的单词放在同一行时,它会跳到下一行。这被证明是非常有用的。然而,这让我处于两难境地。由于我的特殊原因,我的TextView
需要在单词的每个字母和单词之间的两个空格之间留出空格。因此,String
将在一行中分割出一个单词,而在另一行上分割另一个单词。所以,我想我可能需要创建一个扩展TextView
的自定义View
并覆盖它跳到下一行的方式。但是看看class documents for textview我找不到办法,我会这样做。因此,任何帮助,建议或建议将不胜感激!谢谢!
答案 0 :(得分:1)
您可以通过一些修改来覆盖TextView
。
基本策略是覆盖onDraw()
方法并自定义绘制文本。您还必须覆盖onMeasure()
。
在onDraw()
内,您将预先处理字符串中的自定义字词,并根据需要插入换行符(\n
)。
循环显示文字中的字词,并将measureText(String)与TextView
的当前宽度进行比较,以确定插入换行符的位置。不要忘记考虑“填充”。
示例强>:
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
// TODO Auto-generated method stub
super.onMeasure(getSuggestedMinimumWidth(), getSuggestedMinimumHeight());
}
@Override
protected void onDraw(Canvas canvas) {
// preprocess your text
canvas.drawText(...);
}