Android开发中如何编程为TextView同时设置粗体斜体样式
问题原因
TextView.setTypeface() 每次调用都会全量覆盖已有字体样式,不会叠加多次调用传入的样式配置。你第二次调用传入Typeface.ITALIC时,直接覆盖了第一次设置的粗体效果,因此最终仅斜体生效。
实现方案
要达到XML中android:textStyle="bold|italic"的粗斜体效果,将两个样式标志通过按位或运算组合后,一次传入方法即可:
val myView : TextView = findViewById(R.id.date_title) // 按位或组合粗体、斜体样式,单次设置完成 myView.setTypeface(null, Typeface.BOLD or Typeface.ITALIC)
如果TextView此前已经设置过自定义字体,不想因传入null被重置为系统默认字体,可以先获取当前绑定的原有字体,基于它生成带组合样式的字体实例后再赋值:
// 提取TextView当前绑定的原有字体 val originalTypeface = myView.typeface // 基于原有字体生成粗斜体样式的字体实例 val boldItalicTypeface = Typeface.create(originalTypeface, Typeface.BOLD or Typeface.ITALIC) myView.typeface = boldItalicTypeface
Typeface的样式常量本身就是位标志设计,全版本Android系统都支持通过按位或自由组合
Typeface.BOLD和Typeface.ITALIC,无需分多次调用方法设置。
内容的提问来源于stack exchange,提问作者Prashant yadav
相关产品推荐
相关产品推荐

