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