Android TextView支持字体,资源绑定字体

本文介绍了如何通过在strings.xml文件中使用Annotation类和<annotation>标签来定义自定义文本样式。通过在字符串资源中插入注解,然后在代码中检索并应用这些注解,可以实现复杂样式的应用,例如根据注解设置特定字体。这种方法允许开发者在不同语言版本的字符串资源中保持样式一致性。
摘要由CSDN通过智能技术生成

使用注解设置样式

您可以通过使用 strings.xml 资源文件中的 Annotation 类和 <annotation> 标记,应用复杂样式或自定义样式。借助注解标记,您可以通过在 XML 文件中定义自定义键值对来标记自定义样式的部分字符串,框架随后会将该 XML 文件转换成 Annotation span。然后,您便可检索这些注解,并使用键和值来应用样式。

// values/strings.xml
<string name="title">Best practices for <annotation font="title_emphasis">text</annotation> on Android</string>

// values-es/strings.xml
<string name="title"><annotation font="title_emphasis">Texto</annotation> en Android: mejores prácticas</string>

加载字符串资源并找到包含 font 键的注解。然后,创建一个自定义 span,并用其替换现有 span。

SpannedString titleText = (SpannedString) getText(R.string.title_about);
Annotation[] annotations = titleText.getSpans(0, titleText.length(), Annotation.class);

SpannableString spannableString = new SpannableString(titleText);


for (Annotation annotation: annotations) {

  if (annotation.getKey().equals("font")) {
    String fontName = annotation.getValue();

    if (fontName.equals("title_emphasis")) {

    Typeface typeface = ResourcesCompat.getFont(this, R.font.roboto_mono);

    spannableString.setSpan(new CustomTypefaceSpan(typeface),
      titleText.getSpanStart(annotation),
      titleText.getSpanEnd(annotation),
      Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    }
  }
}


styledText.text = spannableString;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值