操作布局上的所有按钮

时间:2014-08-02 17:16:38

标签: java android

我有一个布局(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)?

1 个答案:

答案 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);
   }
}