如何缩小字体以适应 Android 中的内部视图宽度?
How to Shrink Font in Order to fit Inside Width of View in Android?
假设我们有一个固定宽度的单行文本视图。我们想在里面显示一个字符串,但是还不知道这个字符串有多长
我们希望字符串根据需要收缩,以便在不截断的情况下适应文本视图。
在IOS中,这是用this完成的:
之前:
之后:
Android 等价物是什么?
我参考了this并尝试在代码中进行测试:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = findViewById(R.id.tvc);
tv.setText("aa aaa a aaaaaaa aaaadfgd gsfg fsdg dfs gdfs gds fg dsg dsg sdfg dsf g zzzzzzzzzz");
TextViewCompat.setAutoSizeTextTypeWithDefaults(tv, TextViewCompat.AUTO_SIZE_TEXT_TYPE_UNIFORM);
}
但沮丧地发现它不是收缩字体自动适应宽度,而是扩展 适合 高度的字体 ... 字符串被截短得更多。
请注意:这个问题与 (Auto Scale TextView Text to Fit within Bounds) 不同,因为它没有相同的要求:我严格来说是关于 width[= 的单行文本视图57=] restriction... 并且 none 该问题的答案令人满意。
我建议AutofitTextView。在 Android 中,不支持自动调整 TextView,因此您必须自定义。
要么使用 AutofitTextView,要么使用正常的 TextView
添加 ellipsize
属性:
<TextView ...
android:lines="1"
android:ellipsize="end"
/>
如果字符串长度大于文本视图宽度,属性 将添加三个点。
假设我们有一个固定宽度的单行文本视图。我们想在里面显示一个字符串,但是还不知道这个字符串有多长
我们希望字符串根据需要收缩,以便在不截断的情况下适应文本视图。
在IOS中,这是用this完成的:
之前:
之后:
Android 等价物是什么?
我参考了this并尝试在代码中进行测试:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = findViewById(R.id.tvc);
tv.setText("aa aaa a aaaaaaa aaaadfgd gsfg fsdg dfs gdfs gds fg dsg dsg sdfg dsf g zzzzzzzzzz");
TextViewCompat.setAutoSizeTextTypeWithDefaults(tv, TextViewCompat.AUTO_SIZE_TEXT_TYPE_UNIFORM);
}
但沮丧地发现它不是收缩字体自动适应宽度,而是扩展 适合 高度的字体 ... 字符串被截短得更多。
请注意:这个问题与 (Auto Scale TextView Text to Fit within Bounds) 不同,因为它没有相同的要求:我严格来说是关于 width[= 的单行文本视图57=] restriction... 并且 none 该问题的答案令人满意。
我建议AutofitTextView。在 Android 中,不支持自动调整 TextView,因此您必须自定义。
要么使用 AutofitTextView,要么使用正常的 TextView
添加 ellipsize
属性:
<TextView ...
android:lines="1"
android:ellipsize="end"
/>
如果字符串长度大于文本视图宽度,属性 将添加三个点。