Android 之 控件 - TextView

​一、基础用法​

  1. ​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(缩放像素),适配系统字体大小。

  2. ​代码动态操作​

    在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); // 调整大小

 ​二、样式定制​

  1. ​字体与样式​

    • ​粗体/斜体​​:

      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);  // 兼容低版本
      
  2. ​对齐与间距​

    • ​对齐方式​​:

      android:gravity="center"  <!-- 文本在View内居中 -->
      android:textAlignment="center"  <!-- 文本自身居中 -->
    • ​行间距​​:

      android:lineSpacingExtra="8dp"     <!-- 固定间距 -->
      android:lineSpacingMultiplier="1.2"  <!-- 倍数调整 -->
  3. ​阴影效果​

    xml

    android:shadowColor="#80000000"
    android:shadowDx="2"
    android:shadowDy="2"
    android:shadowRadius="4"  <!-- 模糊半径 -->

 三、高级功能​

  1. ​富文本显示​

    • ​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

  2. ​自动链接识别​

    自动识别电话、邮箱、网址并高亮:

  3. ​图片集成​

    android:drawableLeft="@drawable/icon"  <!-- 左侧图标 -->
    android:drawablePadding="8dp"          <!-- 图标与文本间距 -->
  4. ​跑马灯效果​​(文字滚动)

    android:singleLine="true"
    android:ellipsize="marquee"
    android:marqueeRepeatLimit="marquee_forever"  <!-- 无限滚动 -->
    android:focusable="true"
    android:focusableInTouchMode="true"  <!-- 需获取焦点 -->
    

 ​​四、性能优化​

  1. ​避免过度绘制​

    • 减少布局嵌套,优先用ConstraintLayout替代多层LinearLayout

    • 对固定尺寸的TextView设置android:includeFontPadding="false",减少空白。

  2. ​复用与缓存​

    • RecyclerView中复用TextView,避免频繁创建。

    • 使用SpannableStringBuilder动态拼接富文本,减少对象创建。

  3. ​文本截断与省略​

    android:maxLines="2"
    android:ellipsize="end"  <!-- 超出部分显示省略号 -->


 ​​五、最佳实践​

  • ​多语言支持​​:

    使用@string/资源引用文本,在res/values-zh等目录提供多语言翻译。

  • ​可访问性​​:

    为重要文本添加android:contentDescription,方便屏幕阅读器识别。

  • ​样式统一​​:

    通过Style资源定义全局文本样式,避免重复设置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值