如何缩小字体以适应 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"
    />

如果字符串长度大于文本视图宽度,属性 将添加三个点。