237 votes

Comment gonfler un point de vue d'une mise en page

J'ai une mise en page définie en XML. Il contient également:

<RelativeLayout
    android:id="@+id/item"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
/>

Je tiens à gonfler ce RelativeView avec d'autres XML fichier de mise en page. Je peut utiliser différentes mises en page en fonction d'une situation. Comment dois-je faire? J'ai essayé différentes variations de

RelativeLayout item = (RelativeLayout) findViewById(R.id.item);
item.inflate(...)

Mais aucun d'entre eux a bien fonctionné. Heeelp ;)

415voto

Graeme Duncan Points 3150

Je ne suis pas sûr que j'ai suivi votre question - êtes-vous essayer de joindre un enfant en vue de le RelativeLayout? Si donc vous voulez faire quelque chose le long des lignes de:

RelativeLayout item = (RelativeLayout)findViewById(R.id.item);
View child = getLayoutInflater().inflate(R.layout.child, null);
item.addView(child);

111voto

ccheneson Points 24031

Vous gonfler une ressource XML. Voir la LayoutInflater doc .

Si votre mise en page est dans un mylayout.xml, vous voulez faire quelque chose comme:

View view; 
LayoutInflater inflater = (LayoutInflater)   getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
view = inflater.inflate(R.layout.mylayout, null);

RelativeLayout item = (RelativeLayout) view.findViewById(R.id.item);

28voto

Shaista Naaz Points 1934

Si la réponse tardive, mais aimerais ajouter que c'est une manière d'obtenir cette

LayoutInflater layoutInflater = (LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View view = layoutInflater.inflate(R.layout.mylayout, item );

lorsque le point est le parent de mise en page où vous souhaitez ajouter un enfant de mise en page.

19voto

Maximus Points 3299

Il est utile d'ajouter à cela, même si c'est un vieux post, que si la vue enfant qui est gonflé de xml doit être ajouté à un viewgroup mise en page, vous devez appeler à gonfler avec un indice de ce type de viewgroup il va être ajouté. Comme:

View child = getLayoutInflater().inflate(R.layout.child, item, false);

Gonfler méthode est assez surchargé et décrit cette partie de l'utilisation dans les docs. J'ai eu un problème où une vue unique gonflés à partir de xml n'était pas dans l'alignement de la mère correctement jusqu'à ce que j'ai fait ce type de changement.

6voto

Si vous n'êtes pas dans une activité, vous pouvez utiliser la statique from() méthode de l' LayoutInflater classe pour obtenir un LayoutInflater, ou de demande de service à partir du contexte de la méthode de getSystemService() trop :

LayoutInflater i;
Context x;       //Assuming here that x is a valid context, not null

i = (LayoutInflater) x.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
//OR
i = LayoutInflater.from(x);

(Je sais que c'est presque 4 ans, mais toujours utile de mentionner)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X