Java 如何控制TextView何时将字符串发送到新行?

Java 如何控制TextView何时将字符串发送到新行?,java,android,string,textview,Java,Android,String,Textview,当TextView中的字符串中的单词太大,无法与前面的单词放在同一行时,它会跳到下一行。这证明是非常有用的。然而,这让我进退两难。我的字符串,由于我的特殊原因,需要在单词的每个字母之间有一个空格,在单词之间有两个空格。因此,TextView会将一行上有一段的单词和下一行上有另一段的单词分开。因此,我想我可能必须创建一个自定义的视图,它扩展文本视图,并覆盖它跳到下一行的方式。但是看一看,我找不到一个方法,我会这样做。因此,任何帮助、建议或建议都将不胜感激!谢谢 您可以通过一些修改来覆盖TextVi

TextView
中的
字符串
中的单词太大,无法与前面的单词放在同一行时,它会跳到下一行。这证明是非常有用的。然而,这让我进退两难。我的
字符串
,由于我的特殊原因,需要在单词的每个字母之间有一个空格,在单词之间有两个空格。因此,
TextView
会将一行上有一段的单词和下一行上有另一段的单词分开。因此,我想我可能必须创建一个自定义的
视图
,它扩展
文本视图
,并覆盖它跳到下一行的方式。但是看一看,我找不到一个方法,我会这样做。因此,任何帮助、建议或建议都将不胜感激!谢谢

您可以通过一些修改来覆盖
TextView

基本策略是覆盖
onDraw()
方法并自定义绘制文本。您还必须覆盖
onMeasure()

onDraw()
中,您将预处理字符串中的自定义单词,并根据需要插入换行符(
\n

循环浏览文本中的单词,并与
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(...);
}

为什么不尝试在“\n”需要的地方手动引起换行符?假设您没有动态文本内容。文本都是动态的。也许我可以找出单个字符的像素大小,知道有多少个字符,每个单词的起始位置,以及屏幕的大小,我可以构建一个新字符串,在文本视图中设置适当的换行符。但这似乎有点过分。看看这个答案:它正是你所需要的。