我在应用程序中使用HoloEverywhere库,并且为了从主题中应用字体,我向TextView样式添加了一个新的自定义属性ttfName,并对org.holoeverywhere.widget.TextView的构造函数进行了一些必要的更改,如下所示;

if (a.hasValue(R.styleable.TextView_ttfName)) {
    setTypeface(Typeface.createFromAsset(getContext().getAssets(), "fonts/" +
    a.getString(R.styleable.TextView_ttfName)));
}


另外,声明的样式和主题如下:

<style name="AppTheme" parent="@style/Holo.Theme.Light.DarkActionBar">
    <item name="android:textViewStyle">@style/Widget.ApplicationTheme.TextView</item
</style>

<style name="Widget.ApplicationTheme.TextView" parent="@style/Holo.TextView">
    <item name="ttfName">@string/app_font_roboto_light</item>
    <item name="android:textSize">@dimen/app_dimen_default_text_size</item>
</style>


添加的ttfName属性如下:

...
<attr name="ttfName" format="string" />
...
...
<declare-styleable name="TextView">
    <attr name="android:text" />
    <attr name="android:textAllCaps" />
    <attr name="textAllCaps" />
    <attr name="ttfName" />
</declare-styleable>
...


现在,当我将AppTheme应用于我的应用程序时,仅当android版本> 4.0(未在3.0上选中)时,字体才会被应用。
但在Android 2.3版上,该字体未得到应用。

有人可以帮我弄清楚这里出了什么问题吗?

提前致谢。

最佳答案

这是在preHC android上的Holoeverywhere无效的字体,在preHC上的FontLoader在所有textview中都加载roboto字体。

要应用字体,请查看类org.holoeverywhere.FontLoaderFontLoader#apply(View)方法。

10-04 23:05