1.简介
向用户显示文本的用户界面元素。
2.常见使用
2.1 设置文本内容
//xml 硬编码
<TextView android:text="文本"/>
//xml 推荐放在string.xml,为了国际化考虑
<TextView android:text="@string/app_name"/>
//kotlin
tv.text = getString(R.string.app_name)
2.2 字体大小
//xml
<TextView android:textSize = "16sp"/>
//kotlin 默认单位:TypedValue.COMPLEX_UNIT_SP
tv.textSize = 16f
注意 设置字体为SP,会随着手机系统设置改变字体大小,从而导致布局出现问题,特别是老年机上。
建议可以用 dp 代替,或者屏蔽 SP 的功能
方法:在 BaseActivity 中重写
override fun getResources(): Resources {
val res = super.getResources()
val configuration = res.configuration
if (configuration.fontScale != 1.0f) {
configuration.fontScale = 1.0f
}
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N_MR1) {
createConfigurationContext(configuration).resources
} else {
res.updateConfiguration(configuration, res.displayMetrics)
res
}
}
2.3 字体颜色
//xml 硬编码
<TextView android:textColor= "#000000" / >
//xml 推荐 在colors.xml
<TextView android:textColor= "@color/tv_title_black" / >
//kotlin
tv.setTextColor(ContextCompat.getColor(context,R.color.black))
2.4 字体风格(加粗,斜体)
//xml 加粗
<TextView android:textStyle="bold"/ >
//xml 加粗和斜体
<TextView android:textStyle="bold|italic"/>
3.业务场景
3.1 富文本
SpannableString的用法详解
使用时需要注意 Index 越界的问题
3.2 超链接文本
为一段文字中的某段文字添加点击事件,常见业务: 登录模块的隐私政策和用户协议
Android-TextView-LinkBuilder
3.3 给文字设置点击效果
创建一个 selector 文件 select_tv_text.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true" android:color="@color/colorAccent" />
<item android:state_focused="true" android:color="@color/colorAccent" />
<item android:state_pressed="true" android:color="@color/colorAccent" />
<item android:color="@color/colorPrimary"/>
</selector>
设置到 TextView
<TextView ...android:textColor="@drawable/select_tv_text"/>
4.其他
4.1 AppCompatTextView 和 TextView
AppcompatTextView 是兼容低版本的 TextView。项目中的 TextView 会被 LayoutFactor 转化成 AppcompatTextView。但是自己编写的自定义View不会,建议编写继承TextView的自定义控件时,改用继承 AppcompatTextView
4.2 工程化
建议 用 Style 对字体大小,颜色等属性进行封装,方便统一修改
5.资料
Android设置字体不跟随系统字体大小变化
SpannableString的用法详解