Android 遍历布局中的视图并更改字体

Android 遍历布局中的视图并更改字体,android,layout,view,typeface,Android,Layout,View,Typeface,我想知道是否有一种方法可以遍历布局中的所有视图,并更改所有包含文本的视图(即TextView、CheckBox、EditText等)的字体。我有一个布局,我称之为setContentView(),我想知道是否有一种简单的方法可以做到这一点 我可以使用findviewbyd()完成并手动完成这项工作,但我更希望有一种简单的方法来遍历它们 谢谢, -克拉克-也许这会让你开始: protected void changeFonts(ViewGroup root) { Typeface

我想知道是否有一种方法可以遍历布局中的所有视图,并更改所有包含文本的视图(即TextView、CheckBox、EditText等)的字体。我有一个布局,我称之为setContentView(),我想知道是否有一种简单的方法可以做到这一点

我可以使用findviewbyd()完成并手动完成这项工作,但我更希望有一种简单的方法来遍历它们

谢谢,
-克拉克-

也许这会让你开始:

protected void changeFonts(ViewGroup root) {

        Typeface tf = Typeface.createFromAsset(getAssets(), "fonts/comicsans.ttf");

        for(int i = 0; i <root.getChildCount(); i++) {
                View v = root.getChildAt(i);
                if(v instanceof TextView ) {
                        ((TextView)v).setTypeface(tf);
                } else if(v instanceof Button) {
                        ((Button)v).setTypeface(tf);
                } else if(v instanceof EditText) {
                        ((EditText)v).setTypeface(tf);
                } else if(v instanceof ViewGroup) {
                        changeFonts((ViewGroup)v);
                }
        }

    }
受保护的void changeFonts(视图组根目录){
Typeface tf=Typeface.createFromAsset(getAssets(),“font/comicsans.ttf”);

对于(int i=0;我做到了,谢谢!我有一个带有嵌套布局的布局,我只调用了changeFonts()这篇文章还解决了一个类似的问题,并解释了递归方法:聪明的代码应该立即递增,如果语句进行递归搜索,+1Button和EditText是TextView的子类,所以我认为你永远不会转换为Button或EditText。