我为我的应用设置了以下主题:
<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”字体.但是,有些TextViews,我想设置textStyle =“bold”属性,但它不起作用,因为light字体没有“native”(?)粗体变体.
另一方面,如果我以编程方式使用setTypeface方法,我可以得到一个粗体字体:
textView.setTypeface(textView.getTypeface(), Typeface.BOLD);
这个字体来自roboto灯,看起来非常好.
我想要这个大胆的字体,但我想知道最优雅的方式是什么.
>可以单独使用xml吗?
>如果我需要创建“BoldTextView extends TextView”,那么最佳实现是什么?
最佳答案 我最终为它创建了一个类:
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" />