一、基础用法
-
XML布局声明
在布局文件中定义
TextView
,设置文本内容、大小和颜色:<TextView android:id="@+id/tv_example" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello Android!" android:textSize="18sp" android:textColor="#FF0000" />
-
android:text
:文本内容(避免硬编码,推荐@string/xxx
引用资源)。 -
android:textSize
:单位用sp
(缩放像素),适配系统字体大小。
-
-
代码动态操作
在Activity/Fragment中修改文本属性:
TextView tvExample = findViewById(R.id.tv_example); tvExample.setText("New Text"); // 更新文本 tvExample.setTextColor(ContextCompat.getColor(this, R.color.blue)); // 设置颜色 tvExample.setTextSize(TypedValue.COMPLEX_UNIT_SP, 20); // 调整大小
二、样式定制
-
字体与样式
-
粗体/斜体:
xml
android:textStyle="bold|italic" <!-- XML设置 -->
java
tvExample.setTypeface(null, Typeface.BOLD); // 代码设置粗体 tvExample.getPaint().setFakeBoldText(true); // 中文粗体方案
-
自定义字体:
xml
android:fontFamily="@font/custom_font" <!-- API 26+ -->
java
Typeface typeface = ResourcesCompat.getFont(context, R.font.custom_font); tvExample.setTypeface(typeface); // 兼容低版本
-
-
对齐与间距
-
对齐方式:
android:gravity="center" <!-- 文本在View内居中 --> android:textAlignment="center" <!-- 文本自身居中 -->
-
行间距:
android:lineSpacingExtra="8dp" <!-- 固定间距 --> android:lineSpacingMultiplier="1.2" <!-- 倍数调整 -->
-
-
阴影效果
xml
android:shadowColor="#80000000" android:shadowDx="2" android:shadowDy="2" android:shadowRadius="4" <!-- 模糊半径 -->
三、高级功能
-
富文本显示
-
SpannableString(部分文本样式):
SpannableString spannable = new SpannableString("红色粗体文本"); spannable.setSpan(new ForegroundColorSpan(Color.RED), 0, 2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); spannable.setSpan(new StyleSpan(Typeface.BOLD), 2, 4, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); tvExample.setText(spannable); // 应用样式
-
HTML解析(简单标签支持):
String htmlText = "<b>加粗</b> <i>斜体</i>"; tvExample.setText(Html.fromHtml(htmlText, Html.FROM_HTML_MODE_COMPACT)); // 解析HTML
-
-
自动链接识别
自动识别电话、邮箱、网址并高亮:
-
图片集成
android:drawableLeft="@drawable/icon" <!-- 左侧图标 --> android:drawablePadding="8dp" <!-- 图标与文本间距 -->
-
跑马灯效果(文字滚动)
android:singleLine="true" android:ellipsize="marquee" android:marqueeRepeatLimit="marquee_forever" <!-- 无限滚动 --> android:focusable="true" android:focusableInTouchMode="true" <!-- 需获取焦点 -->
四、性能优化
-
避免过度绘制
-
减少布局嵌套,优先用
ConstraintLayout
替代多层LinearLayout
。 -
对固定尺寸的
TextView
设置android:includeFontPadding="false"
,减少空白。
-
-
复用与缓存
-
在
RecyclerView
中复用TextView
,避免频繁创建。 -
使用
SpannableStringBuilder
动态拼接富文本,减少对象创建。
-
-
文本截断与省略
android:maxLines="2" android:ellipsize="end" <!-- 超出部分显示省略号 -->
五、最佳实践
-
多语言支持:
使用
@string/
资源引用文本,在res/values-zh
等目录提供多语言翻译。 -
可访问性:
为重要文本添加
android:contentDescription
,方便屏幕阅读器识别。 -
样式统一:
通过
Style
资源定义全局文本样式,避免重复设置