📅  最后修改于: 2023-12-03 14:59:15.781000             🧑  作者: Mango
在 Android 应用中,TextView 经常用来展示多行文字。默认情况下,TextView 会在到达一行末尾时自动换行。但是,在某些情况下,我们需要让 TextView 不自动换行,否则可能会导致布局混乱。
本文将介绍三种实现方式,让 TextView 不换行。
我们可以在代码中设置单个 TextView 不自动换行:
TextView textView = findViewById(R.id.text_view);
textView.setSingleLine(false); // 不限制行数
textView.setEllipsize(null); // 不省略末尾文字
其中,setSingleLine(false)
取消单行限制,setEllipsize(null)
取消省略末尾文字。
如果需要给所有 TextView 设置不自动换行的属性,我们可以在 App 的主题中进行设置:
<resources>
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- 取消所有 TextView 的自动换行 -->
<item name="android:singleLine">false</item>
<item name="android:ellipsize">none</item>
</style>
</resources>
在主题中,我们设置 singleLine
为 false
、ellipsize
为 none
,即可让所有 TextView 不自动换行。
我们可以在 XML 布局文件中设置 TextView 不自动换行:
<TextView
android:id="@+id/text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="false"
android:ellipsize="none"
android:text="This is a very long text that should not be broken into multiple lines." />
在 TextView 标签中,我们设置 singleLine
为 false
、ellipsize
为 none
,即可让该 TextView 不自动换行。
如果我们使用 View Binding 来操作视图,我们可以在代码中设置单个 TextView 不自动换行:
ActivityMainBinding binding = ActivityMainBinding.inflate(getLayoutInflater());
TextView textView = binding.textView;
textView.setSingleLine(false); // 不限制行数
textView.setEllipsize(null); // 不省略末尾文字
使用 View Binding 和 findViewById 操作视图的方式略有不同。
如果需要使用主题或 XML 属性方式,与上面所述的方式相同。
总之,不管采用哪种方式,我们都能轻松地实现 TextView 不自动换行的效果。