web-dev-qa-db-fra.com

Que signifie gonfler une vue à partir d'un fichier XML?

Je suis novice en développement Android et je continue de rencontrer des références aux vues Gonflantes à partir d'un fichier XML de mise en page. J'ai cherché sur Google et cherché dans le guide de développement, mais je ne pouvais toujours pas comprendre ce que cela voulait dire. Si quelqu'un pouvait donner un exemple très simple, ce serait très apprécié.

268
Brendan Weinstein

Lorsque vous écrivez une présentation XML, elle sera gonflée par le système d'exploitation Android, ce qui signifie qu'elle sera rendue en créant un objet de vue en mémoire. Appelons cela inflation implicite (le système d'exploitation gonflera la vue pour vous). Par exemple:

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);
    }
}

Vous pouvez également gonfler les vues de manière explicite à l'aide de LayoutInflater. Dans ce cas, vous devez:

  1. Obtenez une instance de LayoutInflater
  2. Spécifiez le XML à gonfler
  3. Utilisez le View renvoyé

Par exemple:

LayoutInflater inflater = LayoutInflater.from(YourActivity.this); // 1
View theInflatedView = inflater.inflate(R.layout.your_layout, null); // 2 and 3
247
Cristian

"Gonfler" une vue signifie prendre le XML de mise en page et l’analyser pour créer les objets view et viewgroup à partir des éléments et de leurs attributs spécifiés dans, puis ajouter la hiérarchie de ces vues et groupes de vues au ViewGroup parent. Lorsque vous appelez setContentView (), il attache les vues créées en lisant le code XML à l'activité. Vous pouvez également utiliser LayoutInflater pour ajouter des vues à un autre groupe de vues, ce qui peut être un outil utile dans de nombreuses circonstances.

154
jjb

Gonflage est le processus d’ajout d’une vue (.xml) à une activité au moment de l’exécution. Lorsque nous créons un listView, nous gonflons chaque élément de manière dynamique. Si nous voulons créer un ViewGroup avec plusieurs vues telles que des boutons et textview. Nous pouvons le créer comme

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...

Ensuite, nous devons créer une mise en page où nous pouvons ajouter des vues ci-dessus

RelativeLayout rel = new RelativeLayout();

rel.addView(but);

Et maintenant, si nous voulons ajouter un bouton sur le coin droit et textview sur le bas. Nous devons faire beaucoup de travail. D'abord avec les propriétés de la vue et deuxièmement, nous devons appliquer plusieurs contraintes. C'est un travail difficile et qui prend du temps.

Android nous facilite la création d'un fichier .xml simple, la conception de son style et de ses attributs au format xml et le gonfle simplement là où nous en avons besoin, sans la confusion entre contraintes de configuration et programmation.

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);
32
Xar E Ahmer

Je pense qu'ici, "gonfler une vue" signifie aller chercher le fichier layout.xml en dessinant une vue spécifiée dans ce fichier xml et en POPULATING (= gonfler) le parent viewGroup avec la vue créée.

4
Jaydeep Ranipa

Parce que nous transformons l'interface utilisateur en XML mais que les objets de vue sont ce que nous affichons, nous devons donc convertir xml en objets de vue. Gonfler signifie donc que nous convertissons xml en objets de vue pour qu'il puisse être affiché. Pour cela, nous avons besoin d'un service appelé layout inflator service. et donnez-lui un XML et il sera converti pour vous.

1
blackHawk