android – 自动缩放TextView文本以适应界限
作者:互联网
我正在寻找一种最佳方法来调整TextView中包装文本的大小,使其适合其getHeight和getWidth界限.我不是简单地寻找一种包装文本的方法 – 我想确保它既包装又小到足以完全适合屏幕.
我在StackOverflow上看到了一些需要自动调整大小的情况,但它们或者是非常特殊的黑客解决方案案例,没有解决方案,或者涉及递归地重新绘制TextView,直到它足够小(这是内存密集和强制)用户观察文本逐步收缩每次递归).
但是我确信那里有人找到了一个很好的解决方案,不涉及我正在做的事情:编写几个重度例程来解析和测量文本,调整文本大小,然后重复直到找到一个合适的小尺寸.
TextView使用什么例程来包装文本?难道不能以某种方式用来预测文本是否足够小?
tl; dr:有一种最佳实践方法可以自动调整TextView的大小以适应,包装,在其getHeight和getWidth界限中吗?
解决方法:
从2018年6月起,Android正式开始支持Android 4.0(API级别14)及更高版本的此功能.
请查看:Autosizing TextViews
使用Android 8.0(API级别26)及更高版本:
<?xml version="1.0" encoding="utf-8"?>
<TextView
android:layout_width="match_parent"
android:layout_height="200dp"
android:autoSizeTextType="uniform"
android:autoSizeMinTextSize="12sp"
android:autoSizeMaxTextSize="100sp"
android:autoSizeStepGranularity="2sp" />
编程方式:
setAutoSizeTextTypeUniformWithConfiguration(int autoSizeMinTextSize, int autoSizeMaxTextSize,
int autoSizeStepGranularity, int unit)
textView.setAutoSizeTextTypeUniformWithConfiguration(
1, 17, 1, TypedValue.COMPLEX_UNIT_DIP);
Android 8.0之前的Android版本(API级别26):
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="match_parent"
android:layout_height="200dp"
app:autoSizeTextType="uniform"
app:autoSizeMinTextSize="12sp"
app:autoSizeMaxTextSize="100sp"
app:autoSizeStepGranularity="2sp" />
</LinearLayout>
编程方式:
TextViewCompat.setAutoSizeTextTypeUniformWithConfiguration(
int autoSizeMinTextSize, int autoSizeMaxTextSize, int autoSizeStepGranularity, int unit)
TextViewCompat.setAutoSizeTextTypeUniformWithConfiguration(textView, 1, 17, 1,
TypedValue.COMPLEX_UNIT_DIP);
注意:TextView必须具有layout_width =“match_parent”或绝对大小!
标签:android,scale,textview,word-wrap 来源: https://codeday.me/bug/20190910/1802515.html