首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何为整个Android应用程序设置默认字体系列

如何为整个Android应用程序设置默认字体系列
EN

Stack Overflow用户
提问于 2013-05-07 02:24:32
回答 8查看 323.7K关注 0票数 320

我在我的应用程序中使用了Roboto light字体。要设置字体,我必须将android:fontFamily="sans-serif-light"添加到每个视图。有没有办法将Roboto字体声明为整个应用程序的默认字体系列?我试过这样做,但似乎不起作用。

代码语言:javascript
复制
<style name="AppBaseTheme" parent="android:Theme.Light"></style>

<style name="AppTheme" parent="AppBaseTheme">
    <item name="android:fontFamily">sans-serif-light</item>
</style>
EN

回答 8

Stack Overflow用户

发布于 2019-10-24 21:21:24

在res/value/styles.xml中添加以下代码行

代码语言:javascript
复制
<item name="android:fontFamily">@font/circular_medium</item>

整个样式看起来就像这样

代码语言:javascript
复制
<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“更改为您自己的字体名称..

票数 15
EN

Stack Overflow用户

发布于 2016-04-25 18:19:08

不谈性能,对于自定义字体,你可以使用递归方法循环遍历所有视图,如果是TextView,则设置typeface:

代码语言:javascript
复制
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传递给它,它就完成了:

代码语言:javascript
复制
ViewGroup group = (ViewGroup) getWindow().getDecorView().findViewById(android.R.id.content);
Font.setAllTextView(group);

对于fragment,您可以执行类似的操作。

票数 6
EN

Stack Overflow用户

发布于 2017-08-24 11:15:23

只要使用这个库,就可以在你的成绩文件中编译它

代码语言:javascript
复制
complie'me.anwarshahriar:calligrapher:1.0'

并在main活动的onCreate方法中使用它

代码语言:javascript
复制
Calligrapher calligrapher = new Calligrapher(this);
calligrapher.setFont(this, "yourCustomFontHere.ttf", true);

这是做到这一点的最优雅的超级快速方法。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16404820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档