Android获取视图树

问题描述 投票:0回答:1

我想在一个活动中获取所有视图。喜欢;

ArrayList<View> views = new Arraylist<>();

views.addAll(getAllViewsFromActivity());

我想要的是“ getAllViewsFromActivity()”函数。我显然想获得所有视图,甚至是一个按钮。但我找不到明确的答案。

为了取得进展,必须像这样:

                         MainView : getWindow().getDecorView()
                   -                                                  -
          RelativeLayout
        -                - 
   Button              LinearLayout
                               -
                               TextView

如何在Android中以编程方式获取这棵树?并且还假设我得到了这棵树,是否还可以识别它们的类型,例如:view instanceof Button?

android user-interface view
1个回答
1
投票

您想要的视图很清晰。因此您可以使用父视图(例如LinerarLayout)来获取子视图。因此您可以尝试以下方法:

int count = parent.getChildCount();
for(int i =0; i< count;i++){
   View child = parent.getChildAt(i);
   //here you can to chage the view some proper. 
   //if you only want to change the background color, it belongs to view, don't 
   // need to cast.
}

© www.soinside.com 2019 - 2024. All rights reserved.