如何缩小字体以适应 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 中视图的内部宽度?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Android 文本视图中设置字体宽度?

UILabel 多行文本缩放字体以适应 \n

动态字体大小缩放

css响应式问题,图片随页面宽度等比例缩小该怎么设置

扩展视图框以获得更多绘图区域,并且 SVG 不会缩小以适应容器

Java 设置Excel自适应行高列宽