如何缩小字体以适应 Android 中视图的内部宽度?
Posted
技术标签:
【中文标题】如何缩小字体以适应 Android 中视图的内部宽度?【英文标题】:How to Shrink Font in Order to fit Inside Width of View in Android? 【发布时间】:2019-05-06 13:14:36 【问题描述】:假设我们有一个固定宽度的单行文本视图。我们想在其中显示一个字符串,但我们还不知道该字符串有多长。
我们希望字符串在必要时缩小,以适应文本视图而不被截断。
在 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);
但沮丧地发现它不是自动缩小字体以适应宽度,而是扩展字体以适应height...字符串被截断得更多。
请注意:这个问题与 (Auto Scale TextView Text to Fit within Bounds) 不同,因为它没有相同的要求:我说的是严格意义上的具有 width 限制的单行文本视图...并且该问题的答案都不令人满意。
【问题讨论】:
【参考方案1】:我建议AutofitTextView。在 Android 中,自动调整 TextView 不受本机支持,因此您必须自定义。
【讨论】:
【参考方案2】:您可以使用AutofitTextView,也可以使用普通的TextView
并添加ellipsize
属性:
<TextView ...
android:lines="1"
android:ellipsize="end"
/>
如果字符串长度大于 textview 宽度,此属性将添加三个点。
【讨论】:
以上是关于如何缩小字体以适应 Android 中视图的内部宽度?的主要内容,如果未能解决你的问题,请参考以下文章