防止TextView中的分词

时间:2016-11-28 20:48:20

标签: android android-layout

我有TextView固定宽度,如下所示:

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:textSize="12sp"
    tools:text="Health Department"
    android:layout_marginTop="4dp"
    android:maxLines="2"
    />

......但看起来像是:

   |Health Dep-|
   |  artment  |

......虽然我希望它是:

   |  Health  |
   |Department|

我可以使用什么XML属性来执行此操作?

5 个答案:

答案 0 :(得分:16)

从api 23你可以选择休息策略,这应该可以解决你的问题。

默认情况下,android for TextView使用BREAK_STRATEGY_HIGH_QUALITY,这会导致使用连字符破坏单词。

如果您想避免这种情况,可以将中断策略设置为BREAK_STRATEGY_SIMPLE

您可以在api doc

中找到更多信息

我希望能帮助你。

答案 1 :(得分:13)

尝试在TextView中使用它,这对我有用

android:breakStrategy="simple"

答案 2 :(得分:7)

这是android 6版本(Marshmallow)的新功能。

尝试将以下代码添加到xml布局中的TextView

android:hyphenationFrequency="none"

答案 3 :(得分:7)

我希望将this answer中提到的中断策略应用于整个应用中的所有文本视图,并添加了一个新的v23 / styles.xml,其中包含:

<resources xmlns:android="http://schemas.android.com/apk/res/android">

    <style name="Base.Widget.TextView" parent="android:Widget.TextView">
        <item name="android:breakStrategy">simple</item>
    </style>

</resources>

我将以下内容放在我的themes.xml

<item name="android:textViewStyle">@style/Base.Widget.TextView</item>

答案 4 :(得分:1)

此答案适用于那些希望在截断之前防止文本被分解成单个单词的人,以适应可用空间。

(这是我在进一步阅读之前解释实际问题的方式。)假设:

textView.setText("word1 word2")             // User sees 'word1 word2'
textView.setText("word1 word2islonger ")    // User sees only 'word1'

在后一种情况下,如果您想知道为什么只看到'word1'而不是(也许)'word1 word2islo',那么名称奇特的 ellipsize 属性可能是罪魁祸首。

例如,在您的TextView XML中,尝试指定

android:ellipsize="marquee"

然后,您至少会看到与实际可用空间一样多的预期文本。