如何更改android应用程序的整个字体?之前我在github上看到过这篇文章。该解决方案仅适用于api低于21的设备。对于android 5,即使我们单独添加一个带有styles.xml
的values-v21
文件夹,这种方法也不起作用。
这是我的values-v21/styles.xml
:
<resources>
<style name="AppBaseTheme" parent="Theme.AppCompat.Light.DarkActionBar">
</style>
<style name="AppTheme" parent="AppBaseTheme">
<item name="android:typeface">serif</item>
</style>
</resources>
<style name="AppTheme" parent="AppBaseTheme">
<item name="android:textViewStyle">@style/RobotoTextViewStyle</item>
<item name="android:buttonStyle">@style/RobotoButtonStyle</item>
</style>
<style name="RobotoTextViewStyle" parent="android:Widget.TextView">
<item name="android:fontFamily">sans-serif-light</item>
</style>
<style name="RobotoButtonStyle" parent="android:Widget.Holo.Button">
<item name="android:fontFamily">sans-serif-light</item>
</style>
然后将主题应用到你的应用
<application
android:theme="@style/AppTheme" >
</application>
中的一个建议是创建扩展android Textview的自定义Textview
public class CustomTextView extends TextView{
public CustomTextView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
// TODO Auto-generated constructor stub
}
public CustomTextView(Context context) {
super(context);
init();
// TODO Auto-generated constructor stub
}
public CustomTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init();
// TODO Auto-generated constructor stub
}
private void init(){
Typeface font_type=Typeface.createFromAsset(getContext().getAssets(), "font/ProximaNova_Reg.ttf");
setTypeface(font_type);
}
}
并将您的字体放在android asset/font文件夹中。您可以为Button、EditText等执行此操作。