Я не могу понять использование 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
.