How do you set the font family for the android apps?
I'm using the light roboto font in my app To set the font I've to add the android:fontFamily="sans-serif-light"
to every view. Is there any way to declare the fonts from roboto to the main font family of an app? I've tried to do this but it didn't seem to work
<style name="AppBaseTheme" parent="android:Theme.Light"></style>
<style name="AppTheme" parent="AppBaseTheme">
<item name="android:fontFamily">sans-serif-light</item>
</style>
The answer is yes
Global Roboto light for TextView
and Button
classes.
<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>
Just select the style you want from list themes.xml , then create your custom style based on the original one. At the end, apply the style as the theme of the application.
<application
android:theme="@style/AppTheme" >
</application>
It will work with built-in fonts like roboto but that was the question For custom fonts (loaded from assets for example) this method will not work.
EDIT 08/13/15
If you're using AppCompat themes, remember to remove android:
prefix. For example.
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:textViewStyle">@style/RobotoTextViewStyle</item>
<item name="buttonStyle">@style/RobotoButtonStyle</item>
</style>
Note the buttonStyle
doesn't contain android:
prefix, but textViewStyle
must contain it.