• AppCompatTextView可改变文本字体大小


    有这样一个需求,要求在一个列表中的每个条目中展示字数不限个数的文本。而且每个条目的宽度都是固定的,展示的文本如果过长,不可以用省略号显示,只能动态的调整(缩小)文本的字号来达到文本能完全显示的效果,而且要限一行展示。关于这个效果,其实目前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的话会发现无法显示预期的效果的。

  • 相关阅读:
    Alink漫谈(五) : 迭代计算和Superstep
    Alink漫谈(四) : 模型的来龙去脉
    Elasticsearch索引模板-转载
    Filebeat配置文件解析-转载
    Logtash 配置文件解析-转载
    Logtash遇到的异常和注意点
    Linux中Sshd服务配置文件优化版本(/etc/ssh/sshd_config)
    运维应急方案撰写-草稿版分享
    du和df的统计结果为什么会不一样?
    全网最详细的Linux命令系列-Screen远程会话命令
  • 原文地址:https://www.cnblogs.com/loaderman/p/10382655.html
Copyright © 2020-2023  润新知