如何在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…第一级有一个相对值,第二级有一个线性布局