我有一个布局(FullBody),里面有一些其他布局(页眉,页脚),每个布局都有一组按钮和其他元素(包括其他布局)。如何用for()或其他东西操纵所有按钮?
我已经尝试了这个(Easy way to setOnClickListener() on all Activity Buttons):
ViewGroup group = (ViewGroup)findViewById(R.id.myrootlayout);
View v;
for(int i = 0; i < group.getChildCount(); i++) {
v = group.getChildAt(i);
if(v instanceof Button) v.setOnClickListener(this)
}
这只选择布局的第一级子项。我如何访问所有级别(如DFS)?
答案 0 :(得分:1)
要浏览所有级别的布局,您需要应用递归:
ViewGroup group = (ViewGroup)findViewById(R.id.myrootlayout);
setListenerForGroup(group);
其中:
void setListenerForGroup(ViewGroup group) {
int count = group.getChildCount(); <------- more efficient
for(int i = 0; i < count; i++) {
View v = group.getChildAt(i);
if (v instanceof Button)
v.setOnClickListener(this);
else if (v instanceof ViewGroup)
setListenerForGroup((ViewGroup)v);
}
}