我有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属性来执行此操作?
答案 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"
然后,您至少会看到与实际可用空间一样多的预期文本。