Android 防止在TextView中断开单词

Android 防止在TextView中断开单词,android,textview,Android,Textview,如何防止TextView中的单词在不适合当前行的情况下分成两半,而移动到下一行 |android goo| |gle kitkat | 应该是 |android | |google | |kitkat | TextView当前使用以下代码添加到RelativeLayout: TextView tv = new TextView(this); RelativeLayout.LayoutParams layoutParams = new RelativeLayout.La

如何防止
TextView
中的单词在不适合当前行的情况下分成两半,而移动到下一行

|android goo|
|gle kitkat |
应该是

|android    |
|google     |
|kitkat     |
TextView
当前使用以下代码添加到
RelativeLayout

TextView tv = new TextView(this);
RelativeLayout.LayoutParams layoutParams = new  RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT, RelativeLayout.TRUE);

float scale = getResources().getDisplayMetrics().density;
int dpAsPixels = (int) (16*scale + 0.5f);
tv.setPadding(dpAsPixels, 0, dpAsPixels, 0);

tv.setLayoutParams(layoutParams);

String fullString = "<b>" + user + ":</b> " + text;
fullString = fullString.replaceAll("\n", "<br />");
fullString = fullString.replaceAll(" ", "&#160");
tv.setText(Html.fromHtml(fullString));
tv.setTextSize(32f);
tv.setTextColor(getResources().getColor(R.color.text));

layout.addView(tv);
TextView电视=新的TextView(本);
RelativeLayout.LayoutParams LayoutParams=新的RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_内容,RelativeLayout.LayoutParams.WRAP_内容);
layoutParams.addRule(父项中的RelativeLayout.CENTER,RelativeLayout.TRUE);
浮动比例=getResources().getDisplayMetrics().density;
int-dpAsPixels=(int)(16*刻度+0.5f);
设置填充(dpAsPixels,0,dpAsPixels,0);
tv.setLayoutParams(layoutParams);
字符串fullString=“”+用户+”:“+文本;
fullString=fullString.replaceAll(“\n”和“
”); fullString=fullString.replaceAll(“,”和#160”); tv.setText(Html.fromHtml(fullString)); 电视.setTextSize(32f); tv.setTextColor(getResources().getColor(R.color.text)); 布局。添加视图(电视);
添加

到XML中的TextView条目或调用

setHorizontallyScrolling(false);

文档。

问题在下面一行

fullString=fullString.replaceAll(“,”和#160”)


删除它,它将根据您的需要工作,您不需要用html代码替换空格,
fromHtml
将为您完成这项工作

在某些情况下,我们可以使用Webview并证明html/css的文本帮助,然后设置文本。

您的代码的问题是这一行:

fullString = fullString.replaceAll(" ", "&#160");
通过执行此操作,可以将所有“普通”空格替换为不可拆分的空格(
)。因为这些空间是不可断开的,所以它们可以防止换行


只要去掉这一行,单词就不会再对折了。

你给出的例子实际上会移到下一行。只有在大词的情况下,比如15个字符(或其他语言),我才面临你面临的问题。或者你在给出的示例中也遇到了这个问题吗?检查:你是否尝试了
android:minLines
?如何在文本之间留出空间。例如,使用Html.fromHtml()在TextView中放置“A*******B”。(请假设星形为空格)当我尝试时,TextView显示“a B”(单个空格)没有运气。同样的结果。你能复制粘贴你的代码还是打开新问题?我对上面的例子进行了测试,结果很好
fullString = fullString.replaceAll(" ", "&#160");