Intereting Posts
В чем разница между AppBarLayout и панелью инструментов? Как вы создаете задний стек Android, когда действие запускается непосредственно из уведомления? ASyncTasks блокирует другие Скрытие / отображение панели инструментов при прокрутке фрагмента на вкладках Android – Получение звука для воспроизведения через динамик Открытие исходного кода из редактирования отладки .class после обновления Android R18 Обнаружить кнопку «Назад», но не отклонять диалоговое окно SoundPool: ошибка при создании AudioTrack Как получить прозрачный фон версии webView for 4.0 Какой компилятор использует Android NDK? Как удалить разделитель из списка на Android? CardView layout_margin не работает Каков самый простой способ рисовать текстуру с помощью OpenGL ES? Как установить тему для приложения, чтобы избежать неправильных переходов цвета? Изменение языкового стандарта эмулятора Android автоматически

Что делает класс LayoutInflater? (В Android)

Я не могу понять использование LayoutInflater в Android.

Что такое роль LayoutInflater и как использовать его для простого приложения для Android?

Solutions Collecting From Web of "Что делает класс LayoutInflater? (В Android)"

Что такое Layoutinflater?

LayoutInflater – это класс (оболочка некоторой реализации или службы), вы можете получить один:

 LayoutInflater li = LayoutInflater.from(context); 

Как использовать Layoutinflater?

Вы загружаете файл XML-макета. Вам не нужно указывать полный адрес файла, просто его идентификатор ресурса, который автоматически генерируется в R классе. Например, файл макета, который выглядит так:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:id="@+id/text_view" android:layout_width="fill_parent" android:layout_height="fill_parent"/> </LinearLayout> 

Сохранен как /res/layout/my_layout.xml .

Вы даете это LayoutInflater как:

  View v = li.inflate(R.layout.my_layout,null,false); 

Что сделал Layout Inflater?

Это v теперь объект LinearLayout ( LinearLayout extends View ) и содержит объект TextView , упорядоченный в точном порядке и со всеми установленными свойствами, как мы описали в XML выше.


TL; DR: LayoutInflater читает XML, в котором мы описываем, как мы хотим, чтобы макет пользовательского интерфейса был. Затем он создает реальные объекты View для пользовательского интерфейса из этого XML.

При запуске setContentView(layout file name) вы можете запустить findViewById(id of the widget) . Вам не нужно делать что-то вроде xyz.findViewById . Контекст вашего приложения установлен в этот файл макета, и все findBiewById будут ссылаться на этот файл макета.

Бывают случаи, когда вам нужно подобрать еще один файл макета, например CustomDialog, ListElement или Custom Toast. В это время вы не захотите создать Activity только для этих небольших компонентов пользовательского интерфейса, что в то время вам программно нужно получить программную ссылку на ваш файл макета, чтобы вы могли запускать findViewById.

Надуйте, удалите макет, как воздушный шар, и дайте вам воздушный шар, чтобы вы могли обойти вокруг него все цвета и предметы, нарисованные на нем :). Inflate дает ссылку на объект для этого макета для вызова findViewById.

Надеюсь, это очистит.

Некоторые основы LayoutInflater-

  • LayoutInflater используется для управления экраном Android с использованием предопределенных XML-макетов.
  • Этот класс используется для создания экземпляра XML-файла макета в соответствующие объекты View.

  • Он никогда не используется напрямую. Вместо,

  • Используйте getLayoutInflater() или getSystemService(String) для извлечения стандартного экземпляра LayoutInflater, который уже подключен к текущему контексту.

Из документов Android:

Создает XML-файл макета в соответствующие объекты View. Он никогда не используется напрямую. Вместо этого используйте getLayoutInflater () или getSystemService (String) для получения стандартного экземпляра LayoutInflater, который уже подключен к текущему контексту и правильно настроен для устройства, на котором вы работаете. Например:

 LayoutInflater inflater = (LayoutInflater)context.getSystemService (Context.LAYOUT_INFLATER_SERVICE); 

Полезно при создании пользовательских представлений

Видеть

Скорее всего, он будет закрыт, но роль маятника-надувателя состоит в том, чтобы создать view из предоставленного файла макета

 View row=getLayoutInflater.inflate(R.layout.list_item,parent,false); 

Он создает представление из файла R.layout.list_item и доказывает это view .