- 需求
用户信息显示全部;但是针对不同型号的手机以及个人信息长度的不同要想把信息全部展示就需要改变文字的大小。这一点官方已经给出了解决方案AppCompatTextView;
AppCompatTextView 继承自TextView 并且实现了AutoSizeableTextView接口; - 实现
1、xml文件实现
<android.support.v7.widget.AppCompatTextView
android:textSize="16sp"
android:autoSizeMaxTextSize="16sp"//字体最大字号
android:autoSizeMinTextSize="8sp"//最小字号
android:autoSizeStepGranularity="2sp"//每变化的梯值
android:autoSizeTextType="uniform"//设置为可以改变大小(none为不支持改变)
android:id="@+id/autoSize"
android:layout_width="300dp"
android:layout_height="50dp"
android:maxLines="1"
android:text="朱鹤寺有个姐姐的多看看看问题永爱不大会看毛利率,,,,,,,,这是一个可以控制大小的text"
/>
刚开始在xml中配置后一直没有出来效果,后来才发现Android Studio有提示
原来这个是26之后才提出的,如果想用xml文件的方式那么必须保证设备是Android 8.0以上设备;
那么如何向下兼容呢?那就看方式2
2、动态代码设置
先上代码
//找控件,必须是AppCompatTextView
AppCompatTextView appCompatTextView = findViewById(R.id.autoSize);
//设置为可支持大小缩放 相当于xml中的 android:autoSizeTextType="uniform"
TextViewCompat.setAutoSizeTextTypeWithDefaults(
appCompatTextView, TextViewCompat.AUTO_SIZE_TEXT_TYPE_UNIFORM);
// 最小字号,最大字号(最小字号一定小于等于可全部展示的字号不然没有效果),梯值,单位
TextViewCompat.setAutoSizeTextTypeUniformWithConfiguration(
appCompatTextView, 8, 25, 1, TypedValue.COMPLEX_UNIT_SP);
那么动态设置能向下兼容吗,我是运行在Android 6.1的设备上的没有问题,说明动态配置是可以向下兼容的;