Android получение дерева просмотра - PullRequest
0 голосов
/ 14 января 2020

Я хочу получить все виды внутри действия. как;

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

views.addAll(getAllViewsFromActivity());

, что я хочу, это функция "getAllViewsFromActivity ()". Я четко хочу получить все виды даже одной кнопкой. Но я не смог найти четкого ответа.

Для прогресса это должно быть так:

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

Как я могу получить это дерево в Android программно? а также давайте предположим, что я получил это дерево. Могу ли я также определить их типы, такие как: view instanceof Button?

1 Ответ

1 голос
/ 14 января 2020

вид, который вы хотите получить, ясен. так что вы можете использовать родительское представление (например, 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.
}

...