首页 > 移动平台 > 详细

AppCompatTextView可改变文本字体大小

时间:2019-02-15 11:40:52      阅读:971      评论:0      收藏:0      [点我收藏+]

有这样一个需求,要求在一个列表中的每个条目中展示字数不限个数的文本。而且每个条目的宽度都是固定的,展示的文本如果过长,不可以用省略号显示,只能动态的调整(缩小)文本的字号来达到文本能完全显示的效果,而且要限一行展示。关于这个效果,其实目前android官方已经提供了实现方式。那就是AutoSizeableTextView。

  <android.support.v7.widget.AppCompatTextView
        android:id="@+id/atv"
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:maxLines="1"
        android:textColor="#f00"
        android:textSize="12sp"
        app:autoSizeMaxTextSize="20sp"
        app:autoSizeMinTextSize="4sp"
        app:autoSizeStepGranularity="1sp"
        app:autoSizeTextType="uniform" />  //none时为不支持改变

代码使用

TextViewCompat.setAutoSizeTextTypeWithDefaults(textView, TextViewCompat.AUTO_SIZE_TEXT_TYPE_UNIFORM); 
TextViewCompat.setAutoSizeTextTypeUniformWithConfiguration( textView, 8, 25, 1, TypedValue.COMPLEX_UNIT_SP);

1.当低于27的时候,这个TextView必须属于AutoSizeableTextView类型的,而前面已经说过,AppCompatTextView实现了AutoSizeableTextView接口,因此,为了兼容老版本,我们在xml声明的时候需要声明为AppCompatTextView。

2.控件的宽度和高度必须要有具体的值,不能设置为wrap_content。这一点估计也好理解,如果宽高不固定,也就不会有根据宽高改变字号这一问题了。

3.关于一行展示这个属性,平时我们应该都知道两种方式。那就是singleLine="true",或者maxLines="1"。看我上面的代码,两种方式我都采用的是maxLines="1"的方式进行设置,如果用singleLine的话会发现无法显示预期的效果的。

AppCompatTextView可改变文本字体大小

原文:https://www.cnblogs.com/loaderman/p/10382655.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!