我在我的应用程序中使用了Roboto light字体。要设置字体,我必须将android:fontFamily="sans-serif-light"
添加到每个视图。有没有办法将Roboto字体声明为整个应用程序的默认字体系列?我试过这样做,但似乎不起作用。
<style name="AppBaseTheme" parent="android:Theme.Light"></style>
<style name="AppTheme" parent="AppBaseTheme">
<item name="android:fontFamily">sans-serif-light</item>
</style>
发布于 2019-10-24 21:21:24
在res/value/styles.xml中添加以下代码行
<item name="android:fontFamily">@font/circular_medium</item>
整个样式看起来就像这样
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- 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/circular_medium</item>
</style>
将"circular_medium“更改为您自己的字体名称..
发布于 2016-04-25 18:19:08
不谈性能,对于自定义字体,你可以使用递归方法循环遍历所有视图,如果是TextView,则设置typeface:
public class Font {
public static void setAllTextView(ViewGroup parent) {
for (int i = parent.getChildCount() - 1; i >= 0; i--) {
final View child = parent.getChildAt(i);
if (child instanceof ViewGroup) {
setAllTextView((ViewGroup) child);
} else if (child instanceof TextView) {
((TextView) child).setTypeface(getFont());
}
}
}
public static Typeface getFont() {
return Typeface.createFromAsset(YourApplicationContext.getInstance().getAssets(), "fonts/whateverfont.ttf");
}
}
在您的所有活动中,在setContentView之后将当前的ViewGroup传递给它,它就完成了:
ViewGroup group = (ViewGroup) getWindow().getDecorView().findViewById(android.R.id.content);
Font.setAllTextView(group);
对于fragment,您可以执行类似的操作。
发布于 2017-08-24 11:15:23
只要使用这个库,就可以在你的成绩文件中编译它
complie'me.anwarshahriar:calligrapher:1.0'
并在main活动的onCreate方法中使用它
Calligrapher calligrapher = new Calligrapher(this);
calligrapher.setFont(this, "yourCustomFontHere.ttf", true);
这是做到这一点的最优雅的超级快速方法。
https://stackoverflow.com/questions/16404820
复制相似问题