我为我的应用设置了以下主题:
<style name="AppTheme" parent="Theme.Sherlock.Light">
<item name="android:textViewStyle">@style/RobotoTextViewStyle</item>
</style>
<style name="RobotoTextViewStyle" parent="android:Widget.TextView">
<item name="android:fontFamily">sans-serif-light</item>
</style>
因此当我创建TextView
时,我得到了我想要的“roboto light”字体。但是,有些TextView
,我想设置textStyle="bold"
属性,但它不起作用,因为浅色字体没有“原生”(?)粗体变体。
另一方面,如果我以编程方式使用setTypeface
方法,我可以使用粗体字体:
textView.setTypeface(textView.getTypeface(), Typeface.BOLD);
此字体源自roboto灯,看起来非常好。
我想这个大胆的字体,但我想知道最优雅的方式是什么。
可以单独使用xml吗?
如果我需要创建“BoldTextView extends TextView
”,最佳实施是什么?
答案 0 :(得分:2)
我最终为它创建了一个类:
public class FakeBoldTextView extends TextView {
public FakeBoldTextView(Context context) {
super(context);
setTypeface(getTypeface(), Typeface.BOLD);
}
public FakeBoldTextView(Context context, AttributeSet attrs) {
super(context, attrs);
setTypeface(getTypeface(), Typeface.BOLD);
}
public FakeBoldTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
setTypeface(getTypeface(), Typeface.BOLD);
}
}
并在XML中使用它:
<the.package.name.FakeBoldTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Example string" />