Получить корневое представление из текущей деятельности
Я знаю, как получить корневой вид с вид.getRootView(). Я также могу получить представление от кнопки onClick событие, где аргументом является View. Но как я могу получить посмотреть на активность?
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);надеюсь, это поможет кому-то
чтобы получить представление о текущей деятельности
в любом 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