如何在android中直接获取所有子视图和hirechery

如何在android中直接获取所有子视图和hirechery,android,android-ui,Android,Android Ui,我有这样一个用户界面: <RelativeLayout> <TextView /> <RelativeLayout> <TextView /> <TextView /> <LinearLayout> <TextView /> </Linear

我有这样一个用户界面:

<RelativeLayout>
       <TextView />
       <RelativeLayout>
             <TextView />
             <TextView />
             <LinearLayout>
                  <TextView />
             </LinearLayout>
       </RelativeLayout>
</RelativeLayout>

我想以编程方式访问所有文本视图并更改某些属性,但 我不想使用id和findViewById,因为我有一个多布局,我想在其中执行相同的更改,即:更改文本视图的字体

如何访问所有文本视图,无论是直接视图还是层次视图,如循环中的RelativeLayout还是列表中的RelativeLayout?

LinearLayout mLinearLayout=(LinearLayout)findViewById(R.id.my_linear_layout);
    LinearLayout mLinearLayout = (LinearLayout) findViewById(R.id.my_linear_layout);

    for(i = 0; i <= mLinearLayout.getChildCount(); i++){ 
        View view = mLinearLayout.getChildAt(i); 
        if (view instanceof TextView){ 
            TextView textView = (TextView) view;
            // TODO do your stuff 
        } 
    }

对于(i=0;i),编写递归(甚至线性)算法来遍历视图层次结构是很简单的。大多数解决方案已经概述。您需要做的就是为您感兴趣的特定视图类型添加一些类型检查。“如果您的RelativeLayout(…)中有视图组”-基于这个问题,这里没有太多的if…第一级有一个
相对值
,第二级有一个
线性布局