自动调整文本大小以适应 Android 布局

9

有没有一种方法可以更改文本大小以适合屏幕宽度?我有一个标题,标题很长,问题是在小尺寸屏幕上,标题会移到下一行。我想更改字体大小以使整个文本在一行中完全显示。


2
请查看自动调整 TextView 文档:https://developer.android.com/guide/topics/ui/look-and-feel/autosizing-textview - Domin
我认为没有原生支持,但是你可以查看这个答案: https://dev59.com/iW445IYBdhLWcg3wGmk6 - hossam scott
2
但这是针对API级别26的。 - user10570021
那么问题是什么?这个问题已经被回答了。 - aminography
2个回答

18

Android官方支持文本大小自适应。为了实现动态大小,您应该将autoSizeTextType属性设置为uniform,并将autoSizeMaxTextSize和autoSizeMinTextSize属性设置为所需的大小。

*注意:对于API 26以下的版本,您应该使用'app'前缀而不是'android'。

最后,您应该拥有一个像这样的textView,以使文本拉伸到屏幕宽度:

                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:maxLines="1"
                    android:text="Hello, how are you today"
                    android:textSize="100sp"
                    app:autoSizeMaxTextSize="100sp"
                    app:autoSizeMinTextSize="12sp"
                    app:autoSizeStepGranularity="2sp"
                    app:autoSizeTextType="uniform"
                    />

3
如视频 https://www.youtube.com/watch?v=JYrpEAz_A1U 中所述,应避免使用布局高度来包裹内容,而应使用match_parent或指定的高度。否则可能会导致意外结果。 - Muahmmad Tayyib

4
AndroidX中的TextViewCompat是解决您问题的官方解决方案。

4
这段内容的意思是:这个功能只适用于 Android 版本 26 及以上,但我们可以使用 AppCompatTextViewapp:autoSizeMaxTextSize="100sp" app:autoSizeMinTextSize="12sp" app:autoSizeTextType="uniform" - user924
1
这是关于支持库的一些文档:https://developer.android.com/develop/ui/views/text-and-emoji/autosizing-textview#using-support-library_1 - James

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接