我在我的项目中应用了vision.otf资产/字体和主要/字体,并设置了styles.xml,如下所示
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="android:Theme.Material.Light">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:fontFamily">@font/vision</item>
<item name="fontFamily">@font/vision</item>
</style>
<style name="MyTextField" parent="@android:style/TextAppearance">
<item name="android:ems">10</item>
<item name="android:inputType">textPersonName</item>
<item name="android:background">@null</item>
<item name="android:textColor">@color/lightGrey</item>
<item name="android:textColorHint">@color/lightGrey</item>
<item name="android:backgroundTint">@color/lightGrey</item>
<item name="android:layout_alignParentTop">true</item>
<item name="android:layout_centerHorizontal">true</item>
<item name="android:ellipsize">start</item>
<item name="android:maxLines">1</item>
<item name="android:gravity">center</item>
</style>
</resources>
但是在执行时字体样式根本无法改变。你能告诉我如何在不使用对象类的情况下覆盖字体系列吗?
答案 0 :(得分:1)
您可以扩展应用程序类并在那里设置默认字体。
有一个很棒的同名Calligraphy的库,这会减少你在应用程序扩展类中的大部分工作,并且我很久以来一直在使用它。
你可以这样做: 第1步:包含依赖项
dependencies {
compile 'uk.co.chrisjenx:calligraphy:2.3.0'
}
第2步:安装
@Override
public void onCreate() {
super.onCreate();
CalligraphyConfig.initDefault(new CalligraphyConfig.Builder()
.setDefaultFontPath("fonts/Roboto-RobotoRegular.ttf")
.setFontAttrId(R.attr.fontPath)
.build()
);
//....
}
这会将您选择的字体设置为整个应用程序。就这么简单!
假设您需要更改特定视图的字体,您可以这样做:
<TextView
android:text="@string/hello_world"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
fontPath="fonts/Roboto-Bold.ttf"/>
请通过图书馆查看所有细节,例如如何整理字体资产等,这是一个非常方便的
希望它有所帮助。