Как получить все представления в 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 теперь имеет эту функцию в мониторе устройства, которая позволяет сделать дамп пользовательского интерфейса для его отладки.