我在应用程序中使用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.FontLoader
和FontLoader#apply(View)
方法。