Что значит раздувать вид из xml файла? - PullRequest
264 голосов
/ 02 января 2011

Я новичок в разработке для Android и постоянно сталкиваюсь со ссылками на раздувание представлений из XML-файла макета.Я гуглил и искал руководство по разработке, но все равно не смог понять, что это значит.Если бы кто-то мог привести очень простой пример, он был бы очень признателен.

Ответы [ 5 ]

246 голосов
/ 02 января 2011

Когда вы пишете макет XML, он будет накачан ОС Android, что в основном означает, что он будет визуализирован путем создания объекта представления в памяти. Давайте назовем это неявная инфляция (ОС будет раздувать представление для вас). Например:

class Name extends Activity{
    public void onCreate(){
         // the OS will inflate the your_layout.xml
         // file and use it for this activity
         setContentView(R.layout.your_layout);
    }
}

Вы также можете явно раздувать представления, используя LayoutInflater. В этом случае вы должны:

  1. Получить экземпляр LayoutInflater
  2. Укажите XML для раздувания
  3. Используйте возвращенный View

Например:

LayoutInflater inflater = LayoutInflater.from(YourActivity.this); // 1
View theInflatedView = inflater.inflate(R.layout.your_layout, null); // 2 and 3
154 голосов
/ 02 января 2011

«Раздувать» представление означает брать XML макета и анализировать его, чтобы создать объекты представления и группы представлений из элементов и их атрибутов, указанных внутри, и затем добавить иерархию этих представлений и групп представлений в родительскую ViewGroup. Когда вы вызываете setContentView (), он присоединяет созданные представления от чтения XML к действию. Вы также можете использовать LayoutInflater для добавления представлений в другую ViewGroup, что может быть полезным инструментом во многих случаях.

30 голосов
/ 05 ноября 2014

Раздувание - это процесс добавления представления (.xml) к действию во время выполнения. Когда мы создаем listView, мы динамически раздуваем каждый его элемент. Если мы хотим создать ViewGroup с несколькими видами, такими как кнопки и текстовое представление. Мы можем создать его как

Button but = new Button();
but.setText ="button text";
but.background ...
but.leftDrawable.. and so on...

TextView txt = new TextView();
txt.setText ="button text";
txt.background ... and so on...

Затем мы должны создать макет, куда мы можем добавить вышеуказанные виды

RelativeLayout rel = new RelativeLayout();

rel.addView(but);

А теперь, если мы хотим добавить кнопку в правом углу и текстовое представление внизу. Мы должны сделать много работы. Во-первых, со свойствами представления, а во-вторых, мы должны применить несколько ограничений. Это тяжелая и трудоемкая работа.

Android облегчает нам создание простого XML-файла, проектирует его стиль и атрибуты в XML-формате и просто надувает его везде, где нам это нужно, без путаницы в установлении ограничений и программной установке.

LayoutInflater inflater = 
              (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View menuLayout = inflater.inflate(R.layout.your_menu_layout, mainLayout, true);
//now add menuLayout to wherever you want to add like

(RelativeLayout)findViewById(R.id.relative).addView(menuLayout);
4 голосов
/ 21 июля 2015

Я думаю, что здесь «надувать представление» означает извлекать файл layout.xml, рисуя представление, указанное в этом xml-файле, и POPULATING (= раздувать) родительскую viewGroup с созданным View.

1 голос
/ 21 апреля 2017

Поскольку мы превращаем пользовательский интерфейс в XML, но объекты отображения - это то, что мы отображаем, поэтому нам каким-то образом необходимо преобразовать xml в объекты представления, поэтому надувание означает, что мы преобразовываем xml в объекты представления, чтобы его можно было отобразить, для этого нам нужен сервис, называемый Разместите инфлятор и предоставьте ему xml, и он будет конвертирован для вас.

...