如何控制TextView何时将String发送到新行?

时间:2013-04-12 22:36:22

标签: java android string textview

当来自String的{​​{1}}中的单词太大而无法与之前的单词放在同一行时,它会跳到下一行。这被证明是非常有用的。然而,这让我处于两难境地。由于我的特殊原因,我的TextView需要在单词的每个字母和单词之间的两个空格之间留出空格。因此,String将在一行中分割出一个单词,而在另一行上分割另一个单词。所以,我想我可能需要创建一个扩展TextView的自定义View并覆盖它跳到下一行的方式。但是看看class documents for textview我找不到办法,我会这样做。因此,任何帮助,建议或建议将不胜感激!谢谢!

1 个答案:

答案 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(...);
}