Как получить все виды в деятельности? - PullRequest
10 голосов
/ 11 июля 2010

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

например что-то вроде

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

Ответы [ 5 ]

24 голосов
/ 11 июля 2010

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

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

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

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

4 голосов
/ 17 апреля 2017

Чтобы быть точным:

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

, чтобы показать все виды в текущей деятельности.

1 голос
/ 23 декабря 2010

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

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

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

итерация по циклу.

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

0 голосов
/ 07 июня 2019

Хороший способ сделать это в Kotlin рекурсивно:

private fun View.getAllViews(): List<View> {
    if (this !is ViewGroup || childCount == 0) return listOf(this)

    return children
            .toList()
            .flatMap { it.getAllViews() }
            .plus(this as View)
}
0 голосов
/ 19 марта 2015

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...