防止TextView中的换行符

在我的Android应用程序中,我有一个文本视图,显示包含特殊字符的文本。 TextView以某种方式自动打破字符’/’和’ – ‘的字符串。

例如,字符串“aaaaaaa / bbb-ccccc / ddd”显示为

aaaaaaa/ bbb- ccccc/ ddd 

但是,我想显示它没有任何换行符,除了在视图边界的那个,即,像这样:

 aaaaaaa/bb bb-ccccc/d dd 

有没有办法停用自动换行符或转义这些字符? 我已经尝试用\ uFEFF转义而没有成功。

保留textview属性

 android:layout_width="wrap_content" android:layout_height="wrap_content" 

在string.xml中定义您的字符串

  aaaaaaa\/bb\nbb\-ccccc\/d\ndd 

也许这是一个解决方案: https : //stackoverflow.com/a/22337074/3472905

我已经添加了提到的斜杠:

 public class WordBreakTransformationMethod extends ReplacementTransformationMethod { private static WordBreakTransformationMethod instance; private WordBreakTransformationMethod() {} public static WordBreakTransformationMethod getInstance() { if (instance == null) { instance = new WordBreakTransformationMethod(); } return instance; } private static char[] dash = new char[]{'-', '\u2011'}; private static char[] space = new char[]{' ', '\u00A0'}; private static char[] slash = new char[]{'/', '\u2215'}; private static char[] original = new char[]{dash[0], space[0], slash[0]}; private static char[] replacement = new char[]{dash[1], space[1], slash[1]}; @Override protected char[] getOriginal() { return original; } @Override protected char[] getReplacement() { return replacement; } } 

你可能可以使用Lines属性或其counter-part方法setLines(int)

没有现成的解决方案,也没有“在TextView中用文字换文本”这样的事情,以一种好的方式做到这一点的唯一方法是扩展TextView并修改Paint的breakText(String text,boolean measureForwards,float maxWidth,float [] measuredWidth)function。

此外,您可以计算TextView大小(以像素为单位),计算一个字母的宽度(以像素为单位),然后find适合一行的字母数(X),然后在每个X字母后插入换行符

我测试了以下代码。 您甚至可以将其转换为函数:

  String specialString = "a/b/-c/dd"; String[] specialArray = specialString.split("/"); String str = ""; for(int i = 0; i < specialArray.length - 1; i++){ str = str + specialArray[i] + Character.toString((char) 47); } str = str + specialArray[specialArray.length - 1]; specialArray = str.split("-"); str = ""; for(int i = 0; i < specialArray.length - 1; i++){ str = str + specialArray[i] + Character.toString((char) 45); } str = str + specialArray[specialArray.length - 1]; textView.setText(str); 

现在文本没有逃脱

您可以这样计算文本的大小:

 String text = "This is my text"; Paint textPaint = new Paint(Paint.ANTI_ALIAS_FLAG); textPaint.setTextSize(14.0f); Rect bounds = new Rect(); textPaint.getTextBounds(text, 0, text.length(), bounds); bounds.width() // width in pixels bounds.height() // height in pixels 

根据这些值,您可以分解文本并插入换行符。

它是Android 6中的新function。

尝试将其添加到TextView xml布局中

 android:hyphenationFrequency="none" 

你可以试试这个:

 "aaaaaaa"+"/"+"bbb-ccccc"+"/"+"ddd"