Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

Что такое 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.

Ответ 2

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

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

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

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

Ответ 3

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

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

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

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

Ответ 4

В документах Android:

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

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

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

См.

Ответ 5

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

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

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