阻止Word在TextView中被破坏

时间:2015-05-09 16:19:28

标签: android textview

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);

int i = 1;
foreach (LinkLabel item in this.Controls.OfType<LinkLabel>())
{
    if ((i = 1 - i) == 0)
    {
        LinkLabel linkTemp = cType as LinkLabel;
        Point pos = this.PointToScreen(linkTemp.Location);
        pos = pictureBox1.PointToClient(pos);
        linkTemp.Parent = pictureBox1;
        linkTemp.Location = pos;
        linkTemp.BackColor = Color.Transparent;
    }
}

4 个答案:

答案 0 :(得分:5)

问题出在以下一行

  

fullString = fullString.replaceAll(&#34;&#34;,&#34;&amp;#160&#34;);

删除它,它将按您的需要运行,您不需要用html代码替换空格,fromHtml将为您执行此操作

答案 1 :(得分:2)

您的代码存在问题:

fullString = fullString.replaceAll(" ", "&#160");

通过这样做,您可以用不可破坏的空格(&nbsp)替换所有“普通”空格。由于这些空格不可破坏,因此可以防止换行。

只需删除此行,单词就不会再破坏了一半。

答案 2 :(得分:0)

添加

android:scrollHorizontally="false"

到XML中的TextView条目或调用

setHorizontallyScrolling(false);

文档here

答案 3 :(得分:0)

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