• Android | 自动调整文本大小的 TextViews


    简评:Auto-Sizing TextViews —— 当 TextView 的布局边界尺寸发生变化时,文本大小可以跟着自动缩放调整。

    有时候我们需要 TextView 根据放入的内容来改变其文本大小,之前 Android 对此并没有太多的支持,在 Android O 之后,新增了这项功能。让我们看看是怎么一回事 ~

    首先,在 build.gradle 文件中添加 v26 支持库或更高的版本。

    implementation 'com.android.support:appcompat-v7:26.1.0'implementation 'com.android.support:support-v4:26.1.0'

    通过使用支持库,此功能可以兼容 Android 4.0 及更高的版本。然后添加一个 TextView:

    现在在 TextView 中添加 app:autoSizeTextType="uniform": ![](https://img2018.cnblogs.com/blog/719190/201907/719190-20190730111022291-1693574831.png)

    普通 TextView 和 自动调整大小的 TextView

    你也可以使用这行代码在 Java/Kotlin 执行此操作

    TextViewCompat.setAutoSizeTextTypeWithDefaults(myTextView, TextViewCompat.AUTO_SIZE_TEXT_TYPE_UNIFORM);

    如果在 XML 文件中设置了自动调整大小,则不建议将该值"wrap_content"用于layout_width或layout_height的某个属性TextView。

    根据需要,还有两种方法可以调整文本大小:
    .Granularity(粒度型)
    .Preset Sizes(预置大小型)

    粒度型

    此模式下,通过设置最小值和最大值来确定一个文本大小变化范围,然后设置一个变化粒度值,TextView 就能够以该粒度值为增减变量,在变化范围内动态缩放文本大小。

    在 XML 中,可以这样完成:

    app:autoSizeMaxTextSize=”100sp”
    app:autoSizeMinTextSize=”12sp”
    app:autoSizeStepGranularity=”2sp”
    app:autoSizeText=”uniform”

    在 Java/Kotlin,可以通过调用以下方法来实现:

    TextViewCompat.setAutoSizeTextTypeUniformWithConfiguration(TextView textview, int autoSizeMinTextSize, int autoSizeMaxTextSize, int autoSizeStepGranularity, int unit);
    // ExampleTextViewCompat.setAutoSizeTextTypeUniformWithConfiguration(myTextView, 12, 100, 2, TypedValue.COMPLEX_UNIT_SP);

    预置大小
    TextView 可以根据预置的值自动调整文本大小。

    在 XML 中,使用 autoSizePresetSizesautoSizePresetSizes布局文件中的属性

    android:autoSizeText=”uniform”
    android:autoSizePresetSizes=”@array/autosize_text_sizes”

    要将数组作为资源访问,在 res/values/arrays.xml 文件中定义数组

    10sp 12sp 20sp 40sp 100sp

    在 Java/Kotlin 可以这样实现:

    TextViewCompat.setAutoSizeTextTypeUniformWithPresetSizes(int[] presetSizes, int unit);
    // Exampleint[] sizes = getContext().getResources().getIntArray(R.array.autosize_text_sizes)TextViewCompat.setAutoSizeTextTypeUniformWithPresetSizes(myTextView, sizes, TypedValue.COMPLEX_UNIT_SP);

    关于 Auto-Sizing TextViews 就先介绍到这里 ~

    原文链接:
    《Auto-Sizing TextViews in Android》
    https://medium.com/m/global-identity?redirectUrl=https%3A%2F%2Fandroid.jlelse.eu%2Fauto-sizing-textviews-in-android-d615ee2dc794

  • 相关阅读:
    mysql字符集
    zabbix自动发现zabbix_agent后添加到所属组和链接到某些模块(九)
    zabbix_agent添加到系统服务启动(八)
    苦苦的追寻,奈何~~(一年三份工作的总结)
    systemd service 设置limit,不生效问题
    logrotate
    cron定时任务
    crontab定时任务第一个周期未完成下一个周期执行就来了
    来年仍旧迷茫...
    rsync的daemon模式
  • 原文地址:https://www.cnblogs.com/jpush88/p/11268841.html
Copyright © 2020-2023  润新知