Я не могу понять использование LayoutInflater в Android.
В чем именно заключается роль LayoutInflater и как использовать его для простого приложения для Android?
Я не могу понять использование LayoutInflater в Android.
В чем именно заключается роль 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: A 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 -
Этот класс используется для создания экземпляра 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.