3

当 a 中的一个单词String太大TextView而不能与前面的单词放在同一行时,它会跳到下一行。这被证明是非常有用的。然而,这让我进退两难。My String,出于我的特殊原因,需要在单词的每个字母之间有一个空格,并且在单词之间有两个空格。正因为如此,TextView将分割单词在一行上,另一行在下一行。所以,我想我可能必须创建一个自定义View来扩展TextView和覆盖它跳到下一行的方式。但是看一下textview 的类文档,我找不到这样做的方法。因此,任何帮助、建议或建议将不胜感激!谢谢!

4

1 回答 1

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(...);
}
于 2013-04-12T22:50:45.307 回答