如何获取活动中的所有视图?

ary*_*axt 11 android view android-activity

有没有办法让我的活动中的每个视图?我有200多个视图,包括按钮和图像,所以我希望能够通过循环访问它们

比如说像

for (View v : this)
{
     //do something with the views 
     //depending on the types (button, image , etc)
}
Run Code Online (Sandbox Code Playgroud)

Com*_*are 26

有没有办法让我的活动中的每个视图?

获取您的根View,将其转换为a ViewGroup,调用getChildCount()getChildAt()根据需要进行递归.

我有200多个视图,包括按钮和图像,所以我希望能够通过循环访问它们

这是一个相当大的数字Views.

  • SDK附带的`hierarchyviewer`工具可以帮助您找到这样的问题.它可以在视觉上以树形式显示应用程序的视图层次结构,允许您检查每个视图的属性. (6认同)

Mar*_*n B 5

再具体一点:

private void show_children(View v) {
    ViewGroup viewgroup=(ViewGroup)v;
    for (int i=0;i<viewgroup.getChildCount();i++) {
        View v1=viewgroup.getChildAt(i);
        if (v1 instanceof ViewGroup) show_children(v1);
        Log.d("APPNAME",v1.toString());
    }
}
Run Code Online (Sandbox Code Playgroud)

然后在某处使用该函数:

show_children(getWindow().getDecorView());
Run Code Online (Sandbox Code Playgroud)

以显示当前活动中的所有视图。