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



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

669   8  

8 ответов:

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

findViewById(android.R.id.content)

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

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

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

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

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

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

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

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

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

getWindow().getDecorView().getRootView()

дайте тот же вид, что мы получаем от

anyview.getRootView();

com.android.internal.policy.impl.PhoneWindow$DecorView@#########

и

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

давая ребенку его

android.widget.FrameLayout@#######

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

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

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

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

или

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

просто упаковать кто-то нуждается в более простой способ:

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

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

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

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

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

anyview.getRootView(); будет самый простой способ.

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

в любом onClick мы будем получать "View view", используя "view" получить rootView.

вид = вид.getRootView();

и получить представление в фрагменте

View view = FragmentClass.getView ();

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

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

затем вы можете бросить его в свой реальный класс

или вы могли бы использовать

getWindow().getDecorView();

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

Comments

    Ничего не найдено.