android:如何为整个应用程序设置自定义字体

android:如何为整个应用程序设置自定义字体,android,custom-font,Android,Custom Font,我已经开发了一个非常庞大的应用程序,现在我需要为应用程序中的所有控件定制字体。所以我想知道一次改变字体的更好方法。该应用程序有一百多个XML布局。我无法将所有控件更改为具有自定义字体的自定义组件。请提供一种在不更改XML中所有控件的情况下更改字体的解决方案。执行类似操作 pacage com.prac; class MyFontedTextView extends TextView { public FontedTextView(Context context) { su

我已经开发了一个非常庞大的应用程序,现在我需要为应用程序中的所有控件定制字体。所以我想知道一次改变字体的更好方法。该应用程序有一百多个XML布局。我无法将所有控件更改为具有自定义字体的自定义组件。请提供一种在不更改XML中所有控件的情况下更改字体的解决方案。

执行类似操作

pacage com.prac;
class MyFontedTextView extends TextView {
    public FontedTextView(Context context) {
        super(context);
        init();
    }

    public FontedTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public FontedTextView(Context context, AttributeSet attrs, int defStyle) {
         super(context, attrs, defStyle);
         init();
    }

    private void init() {
     String otfName = "MyCustomOtfFileWhichIPutInAssetsFolder.otf";
     Typeface font = Typeface.createFromAsset(context.getAssets(), otfName);
     this.setTypeface(font);
    }
}
现在从您的文本视图中用xml文件替换所有这些内容

<com.prac.MyFontedTextView ....        instead of <TextView

我相信您的特殊情况下,样式可能会有所帮助。如果您希望更改字体,这种方式可以使您从下次的情况中受益。你只需要在一个地方做,我知道这项技术,但我有100个XML页面,其中有1000个控件。如果我要更改所有这些控件或任何其他选项,这将大有帮助:
find-名称“*xml”| xargs sed-i’s/如果您有多个文本视图(如列表中的),那么您应该真正设置只访问一次资源。如果您可以使用一个静态字体变量,然后引用它,那么它将极大地提高性能。每次从资源中设置每个视图中的类型面都非常慢。