Intereting Posts
Команды Android ADB для получения свойств устройства Экран браузера браузера Android, screen.height & window.innerWidth & window.innerHeight ненадежны Невозможно изменить ArrayAdapter в ListView: UnsupportedOperationException Camera.setParameters не удалось в android Студия Android добавляет нежелательное разрешение после запуска приложения на реальном устройстве Как узнать, существует ли конкретный пакет на моем Android-устройстве? Почему размер apk для Android отличается при построении из окон и mac Исключение в ListPreferences Существуют ли соглашения о том, как назвать ресурсы? Создание LinearLayout действует как кнопка Получить имя приложения / ярлык через оболочку или терминал АБР Android «Только оригинальный поток, создавший иерархию представлений, может коснуться его представлений». Добавить пользовательский шрифт для полного приложения для Android Определить существование функции Google Streetview Как я могу обновить ADT в Eclipse?

Получение дочерних элементов из LinearLayout

Есть ли способ получить дочерний элемент LinearLayout? Мой код возвращает представление (linearlayout), но мне нужно получить доступ к определенным элементам внутри макета.

Какие-либо предложения?

(Да, я знаю, что могу использовать findViewById, но я создаю макеты / дочерние элементы в java, а не XML.)

Solutions Collecting From Web of "Получение дочерних элементов из LinearLayout"

Вы всегда можете сделать что-то вроде этого:

LinearLayout layout = setupLayout(); int count = layout.getChildCount(); View v = null; for(int i=0; i<count; i++) { v = layout.getChildAt(i); //do something with your child element } 

Я думаю, что это может помочь: findViewWithTag ()

Установите TAG для каждого вида, который вы добавляете в макет, и затем получите этот вид по TAG, как вы бы это сделали, используя ID

Я бы не стал статически захватывать элемент у детей представления. Теперь он может работать, но делает код сложным для поддержания и восприимчивости к будущим выпускам. Как указано выше, правильный способ сделать это – установить тег и получить представление по тегу.

Вы можете это сделать.

 ViewGroup layoutCont= (ViewGroup) findViewById(R.id.linearLayout); getAllChildElements(layoutCont); public static final void getAllChildElements(ViewGroup layoutCont) { if (layoutCont == null) return; final int mCount = layoutCont.getChildCount(); // Loop through all of the children. for (int i = 0; i < mCount; ++i) { final View mChild = layoutCont.getChildAt(i); if (mChild instanceof ViewGroup) { // Recursively attempt another ViewGroup. setAppFont((ViewGroup) mChild, mFont); } else { // Set the font if it is a TextView. } } } 
 LinearLayout layout = (LinearLayout)findViewById([whatever]); for(int i=0;i<layout.getChildCount();i++) { Button b = (Button)layout.getChildAt(i) } 

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

 View v = (View)layout.getChildAt(i); if (v instanceof Button) { Button b = (Button) v; }