Aller au contenu

mutualisation des Layout


Clorish

Recommended Posts

Bonjour,

Je met en place dans mon application une IHM assez complexe, avec entre autre dans une meme activity plusieurs blocs de composants identique.

Je m'explique :

J'ai un LinearLayout vertical qui contient une liste de Layout contenant plusieurs composants tels que : Textview, ImaveView, Button ...

Ces composants sont interactifs et doivent donc etre mannipulés, modifiés depuis mon application.

Dnas un premier temps j'ai donc defini cette liste (fini) de layout "a la main" dans mon fichier XML avec une indexation de chacun de mes composts (tvChamp1, tvChamp2, btnButton1, ...).

J'ai vu qu'il est possible de definir un fichier XML pour le layout mutualisé et faire une liste d'include dans mon XML principal.

Cependant cela m'oblige quand meme a definir un ID differnts pour les sous composants de mes laoyout si je souhaite y acceder.

Existe t il un moyen de hierarchiser les layout de facon a pouvoir acceder aux composant d'un layout depuis sont parent ?

du genre : "MonLayout.MonComposant" ?

Toute autre solution est la bienvenue :)

Merci d'avance.

Lien vers le commentaire
Partager sur d’autres sites

Je viens de regarder mais je ne vois rien qui puisse m'aider.

Je ne cherche pas a connaitre le parent d'une vue ou les fils d'un layout ..

C'est plutot lors de la definition d'un fichier XML : L'id que l'on specifie (accessible via R.id.XXX) est unique.

Disons que je defini des vues "tvChamp1" et "tvChamp2" dans le fichier myframe.xml, comment puis je faire reference à ce fichier depuis un 2e fichier xml de maniere multiple ?

Par exemple j'utilise dans d'autres cas la directive include, nommant les layout "MyFrame1" et "MyFrame2" ce qui fonctionne tres bien si ce sont 2 fichiers xml differents.

Coté applicatif, j'accede aux differentes vues de mes layout par leur ID vu qu'il est unique.

Dans mon cas precis, MyFrame1 et MyFrame2 font référence au meme fichier xml, donc, les champs sont en double .....

Peux t on definir une option de maniere a ce que les champs du layout importé soit par exemple préfixé du nom donné au layout ?

Exemple : MyFrame1/tvChamp1, MyFrame2/tvChamp2 ...

Lien vers le commentaire
Partager sur d’autres sites

Apres quelques rechercehs supplementaires, je suis tombé cette solution que je partage si quelqu'un en a besoin.

definition des layouts :

child.xml

<LinearLayout android:id="@+id/row" >

<ImageView android:id="@+id/image" />

<TextView android:id="@+id/text" />

</LinearLayout>

main.xml

<LinearLayout android:id="@+id/flipper" >

<include android:id="@+id/row1" android:layout="child" />

<include android:id="@+id/row2" android:layout="child" />

</LinearLayout>

Dans le code :

LinearLayout row1 = (LinearLayout) findViewById(R.id.row1)

TextView text1 = row1.findViewById(R.id.text);

LinearLayout row2 = (LinearLayout) findViewById(R.id.row2)

TextView text2 = row2.findViewById(R.id.text);

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...