文档章节

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

极光开发者服务
 极光开发者服务
发布于 06/11 15:15
字数 630
阅读 6
收藏 0

简评: 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
    android:id="@+id/textView1"
    android:layout_width="match_parent"
    android:layout_height="100dp"
    android:text="Hello Any Small Text Goes Here"/>

现在在 TextView 中添加 app:autoSizeTextType="uniform":

<TextView
    android:id="@+id/textView1"
    android:layout_width="match_parent"
    android:layout_height="100dp"
    app:autoSizeTextType="uniform"
    android:text="Hello Any Small Text Goes Here"/>

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

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

TextViewCompat.setAutoSizeTextTypeWithDefaults(myTextView, 
TextViewCompat.AUTO_SIZE_TEXT_TYPE_UNIFORM);

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

根据需要,还有两种方法可以调整文本大小:

  1. Granularity(粒度型)
  2. 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); 

// Example
TextViewCompat.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 文件中定义数组

<array name=”autosize_text_sizes”> 
    <item>10sp</item> 
    <item>12sp</item> 
    <item>20sp</item> 
    <item>40sp</item> 
    <item>100sp</item> 
</array>

在 Java/Kotlin 可以这样实现:

TextViewCompat.setAutoSizeTextTypeUniformWithPresetSizes(int[] presetSizes, int unit);

// Example
int[] 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 推荐阅读:怎样减少 Android 应用包 60% 的大小?

© 著作权归作者所有

极光开发者服务
粉丝 43
博文 240
码字总数 257306
作品 1
深圳
个人站长
私信 提问
Android | 自动调整文本大小的 TextViews

简评:Auto-Sizing TextViews —— 当 TextView 的布局边界尺寸发生变化时,文本大小可以跟着自动缩放调整。 有时候我们需要 TextView 根据放入的内容来改变其文本大小,之前 Android 对此并...

极小光
2018/05/30
0
0
android软键盘弹出引起的各种不适终极解决方案

很多写登录界面的开发者都会遇到一个问题:那就是在登录界面时,当你点击输入框时,下边的按钮有时会被输入框挡住,这个不利于用户的体验,所以很多人希望软键盘弹出时,也能把按钮挤上去。很...

simpower
2014/09/21
1K
2
android软键盘的显示后隐藏

一:简述 点击文本框EditText,系统会自动弹出软键盘(其本质是一个Dialog),这必然会引起当前Activity主窗口的大小调整 而Android提供了不同的可选模式去调整活动窗口的大小,与之相关的属性...

sxl01890
2015/08/26
1K
0
android组建属性及使用许可

线性布局LinearLayout组件属性列表 线性布局参数LinearLayout_Layout 相对布局RalativeLayout 相对布局参数RalativeLayout_Layout 绝对布局参数AbsoluteLayout_Layout 框布局FrameLayout 框布...

xiahuawuyu
2013/01/06
228
0
Android软键盘的隐藏显示研究

Android是一个针对触摸屏专门设计的操作系统,当点击编辑框,系统自动为用户弹出软键盘,以便用户进行输入。 那么,弹出软键盘后必然会造成原有布局高度的减少,那么系统应该如何来处理布局的...

迷途d书童
2012/03/30
7.5K
0

没有更多内容

加载失败,请刷新页面

加载更多

Rust:最小化窗口后 CPU占用率高 (winit,glutin,imgui-rust)

最近试着用 imgui-rust 绘制界面,发现窗口最小化后CPU占用会增大。 查询的资料如下: https://github.com/rust-windowing/winit/issues/783 https://github.com/ocornut/imgui/issues/1151 ...

reter
26分钟前
8
0
cloud-zuul路由网关

九、zuul路由网关 概述 1.1 能干嘛 路由、过滤 路由基本配置 路由访问映射规则 十、springCloud config分布式配置中心

榴莲黑芝麻糊
26分钟前
12
0
Circuit Breaker模式

Circuit Breaker模式会处理一些需要一定时间来重连远程服务和远端资源的错误。该模式可以提高一个应用的稳定性和弹性。 问题 在类似于云的分布式环境中,当一个应用需要执行一些访问远程资源...

mskk
39分钟前
16
0
写论文之前的准备都有哪些?干货来了!

原文链接:https://www.lwfdy.com/archives/144.html 之前跟大家谈了许多有关于初稿修改以及写作事项需要注意的问题,那么今天我们来说一说,在写之前,我们需要做哪些准备呢,为了做到下笔如...

辅导员
45分钟前
11
0
idea快捷键

Alt + Enter 引入类 Ctrl + O 查看我们继承的类或者接口中的方法,以及我们要实现的方法 Ctrl + Alt + b 查看接口实现类中方法(就是我们使用接口编程时,在调用实现类方法处直接Ctrl+鼠标左...

行者终成事
53分钟前
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部