Android:如何通过字符来包装文字? (不是用文字)

例如:

This is foo text for wrapping text in TextView 

TextView包装的方式是:

 This is foo text for wrapping text in ... 

我要这个:

 This is foo text for wr apping text in TextView 

Solutions Collecting From Web of "Android:如何通过字符来包装文字? (不是用文字)"

这有点不好意思,但你可以用unicode不间断空格字符(U + 00A0)replace空格。 这将导致您的文本被视为一个单一的string,并包装在字符而不是单词。

myString.replace(" ", "\u00A0");

据我所知,TextView没有这样的属性。 如果你想自己实现文本包装,你可以重写TextView并使用Paint的breakText(String text, boolean measureForwards, float maxWidth, float[] measuredWidth)函数。 请注意,您必须指定文字大小,字体等来绘制实例。

在每个字符之后添加一个不可见的零宽度空间('\ u200b'):

 textView.setText(longlongText.replaceAll(".(?!$)", "$0\u200b")); 

这也适用于不含空格的长string(例如链接地址)。 标准的TextView试图通过问号“?”来分解链接 和斜杠'/'。

 public class CharacterWrapTextView extends TextView { public CharacterWrapTextView(Context context) { super(context); } public CharacterWrapTextView(Context context, AttributeSet attrs) { super(context, attrs); } public CharacterWrapTextView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override public void setText(CharSequence text, BufferType type) { super.setText(text.toString().replace(" ", "\u00A0"), type); } } 

 <com.my.CharacterWrapTextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="text"/> 

在这里输入图像说明

(黄色背景:普通的文本视图)