sans-serif-light with"假冒大胆"

时间:2014-07-10 12:39:22

标签: android

我为我的应用设置了以下主题:

<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灯,看起来非常好。


我想这个大胆的字体,但我想知道最优雅的方式是什么。

  1. 可以单独使用xml吗?

  2. 如果我需要创建“BoldTextView extends TextView”,最佳实施是什么?

1 个答案:

答案 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" />