Почему нет метода getContentView () для Activity?
Класс Activity
имеет метод setContentView()
. Класс PopupWindow
имеет метод getContentView()
но ничего больше. Есть ли другой способ получить основное представление контента для активности?
- Какова роль content_main.xml в android studio 1.4?
- Точная процедура добавления «jfeinstein10 / SlidingMenu» в проект Android
- В чем разница между начальным / конечным маржем Android и правым / левым?
- Как удалить фокус, не устанавливая фокус на другой элемент управления?
- Редактор макета Android ConstraintLayout
- Переключение между представлением fragmentа
- Фоновый оттенок Lollipop не влияет на кнопку
- Изменить правильную маржу в представлении Programmatically?
Мне удалось добраться до содержимого Activity с помощью этого вызова:
ViewGroup view = (ViewGroup)getWindow().getDecorView();
Вероятно, вы должны проверить, что getDecorView возвращает экземпляр ViewGroup для всех случаев, но с LinearLayout в Activity код выше работает нормально. Чтобы добраться до LinearLayout, вы могли бы просто:
LinearLayout content = (LinearLayout)view.getChildAt(0);
И если у вас есть такая функция:
void logContentView(View parent, String indent) { Log.i("test", indent + parent.getClass().getName()); if (parent instanceof ViewGroup) { ViewGroup group = (ViewGroup)parent; for (int i = 0; i < group.getChildCount(); i++) logContentView(group.getChildAt(i), indent + " "); } }
Вы можете перебирать все виды и записывать имена их classов со следующим вызовом внутри вашей операции:
logContentView(getWindow().getDecorView(), "");
Следующая строка сделает трюк:
findViewById(android.R.id.content);
она по существу такая же, как (ее нужно вызвать в контексте Activity)
this.findViewById(android.R.id.content);
Я тоже ищу это, но я просто подумал, что было бы проще добавить id во внешнюю ViewGroup.
Тем не менее, я продолжу искать еще несколько минут. Я вхожу в это, чтобы использовать findViewWithTag из самого внешнего макета.