Как получить все представления в Activity?

есть ли способ получить каждый вид, который находится внутри моей деятельности? У меня есть более 200 просмотров, включая кнопки и изображения, поэтому я хочу иметь доступ к ним с помощью цикла

что-то вроде
for (View v : this)
{
     //do something with the views 
     //depending on the types (button, image , etc)
}

4 ответов


есть ли способ получить каждый вид, который внутри моей деятельности?

получить свой корень View, бросил его в ViewGroup, называют getChildCount() и getChildAt(), и повторить по мере необходимости.

у меня есть более 200 просмотров, включая пуговицы и картинки, так что я хочу быть возможность доступа к ним с помощью цикла

это довольно большое количество Views.


а именно:

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());
    }
}

а затем используйте функцию где-нибудь:

show_children(getWindow().getDecorView());

для отображения всех представлений в текущем действии.


попробуйте найти все представления, связанные с действием.

дать следующую команду.

ViewGroup viewgroup=(ViewGroup)view.getParent();
viewgroup.getchildcount();

повторите цикл.

мы получим результат.


вы можете использовать hierarchyviewer, он позволяет вам видеть иерархию представления, включая созданные в коде. Это основная причина для отладки таких вещей. Последняя Android Studio теперь имеет эту функцию в мониторе устройства, которая позволяет сделать дамп пользовательского интерфейса для его отладки.