Comment inclure une mise en page deux fois dans Android?

Androd's <include /> l'élément vous permet d'inclure d'autres mises en page XML. Utile pour un en-tête commun à plusieurs activités.

mais, que faire si vous voulez inclure une mise en page plusieurs fois dans la même vue? Par exemple, j'ai soigneusement mise en page que je veux afficher trois fois dans ma vue. Tous ces cas ont besoin de différentes valeurs. Depuis l' include est fondamentalement un prendre que XML et de le coller ici, il me faudrait quelque chose de plus puissant.

Est-il un mécanisme pour ce faire?

(je N'ai moi-même expliquer correctement?)

25
demandé sur espinchi 2010-12-04 21:36:14
la source

4 ответов

Un post de blog à http://www.coboltforge.com/2012/05/tech-stuff-layout/ explique exactement ce problème (la même mise en page XML inclus plusieurs fois) et comment le résoudre!

Modifier

lorsque vous cherchez par id, vous trouvez toujours les premiers éléments, donc les seconds sont cachés.

Toutefois, il peut être résolu

<include> -- id1
    -- stuff
</include>
<include> -- id2
    -- stuff
</include>

ainsi nous pouvons trouver les sous-éléments, en cherchant d'abord id2 / id1.

View include_1 = findViewById(R.id.id1); 
View include_2 = findViewById(R.id.id2); 

et enfin

include_2.findViewById(R.id.elementx );
52
répondu bk138 2016-06-22 21:49:38
la source

Est-il un mécanisme pour ce faire?

Créer un custom View. Voici un projet j'ai un ColorMixer widget personnalisé, par exemple. Vous pourriez inclure plusieurs de ces ColorMixers dans une mise en page d'activité, si vous le souhaitez. Chacun peut avoir ses propres paramètres pour adapter son fonctionnement.

5
répondu CommonsWare 2010-12-04 21:49:37
la source

une autre façon de procéder pourrait être de définir la mise en page du" modèle " dans un xml et de la gonfler avec LayoutInflater et d'ajouter à votre vue autant de fois que vous le souhaitez et y insérer les valeurs personnalisées à chacun. Ici est un exemple pour créer une vue Toast personnalisée avec layout inflater.

3
répondu Javi 2010-12-04 22:19:16
la source

Vous pouvez utiliser android:id pour spécifier l'id de la vue racine du layout inclus; il supplantera également l'id du layout inclus si un est défini. De même, vous pouvez outrepasser tous les paramètres de layout.

basé sur leandroid:id vous pouvez obtenir la section par id, puis vous pouvez à nouveau obtenir element par id basé sur la section que vous venez de récupérer. De cette façon, vous serez en mesure de rechercher tous les points de vue de l'enfant avec les mêmes ID, dans chaque parent différentes ID vues en deux étape.

2
répondu Pentium10 2010-12-04 21:57:19
la source

Autres questions sur