Получить представление корня из текущей активности

Я знаю, как получить представление корня с помощью View.getRootView(). Я также могу получить представление из кнопки onClick, где аргумент View. Но как я могу получить представление в activity?

Ответ 1

Если вам нужен корневой вид вашей активности (чтобы вы могли добавить туда свое содержимое) используйте

findViewById(android.R.id.content)

Также сообщалось, что на некоторых устройствах вы должны использовать

getWindow().getDecorView().findViewById(android.R.id.content)

вместо.

Обратите внимание, что, как сообщал Booger, это может быть за панель навигации (с кнопкой "Назад" и т.д.) на некоторых устройствах (но, похоже, на большинстве устройств это не так).

Если вам нужно получить представление, которое вы добавили в свою деятельность, используя метод setContentView(), тогда как pottedmeat написал, вы можете использовать

final ViewGroup viewGroup = (ViewGroup) ((ViewGroup) this
            .findViewById(android.R.id.content)).getChildAt(0);

Но лучше просто установите id для этого представления в вашем макете xml и используйте этот идентификатор.

Ответ 2

Это то, что я использую, чтобы получить представление корня, найденное в XML файле, присвоенном setContentView:

final ViewGroup viewGroup = (ViewGroup) ((ViewGroup) this
            .findViewById(android.R.id.content)).getChildAt(0);

Ответ 3

Я тестировал это в android 4.0.3, только:

getWindow().getDecorView().getRootView()

дают то же представление, что мы получаем из

anyview.getRootView();

[email protected]#########

и

getWindow().getDecorView().findViewById(android.R.id.content)

задание дочернего элемента

[email protected]#######

Пожалуйста, подтвердите.

Ответ 4

Просто подрезать Кому-то нужен более простой способ:

Следующий код дает представление о всей деятельности:

View v1 = getWindow().getDecorView().getRootView();

Чтобы получить представление certian в действии, например imageView внутри действия, просто добавьте идентификатор этого представления, которое вы хотите получить:

View v1 = getWindow().getDecorView().getRootView().findViewById(R.id.imageView1);

Надеюсь, что это поможет кому-то.

Ответ 5

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

Внутри нашей деятельности мы можем получить представление root с помощью:

ViewGroup rootView = (ViewGroup) ((ViewGroup) this
            .findViewById(android.R.id.content)).getChildAt(0);

или

View rootView = getWindow().getDecorView().getRootView();

Ответ 6

если вы находитесь в действии, предположите, что есть только один корневой вид, вы можете получить его так.

ViewGroup viewGroup = (ViewGroup) ((ViewGroup) this
        .findViewById(android.R.id.content)).getChildAt(0);

вы можете перевести его в свой класс

или вы можете использовать

getWindow().getDecorView();

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