Comment inclure la mise en page dans la mise en page dans Android?
Je crée une mise en page commune. Je souhaite inclure cette mise en page dans une autre page.
Réponses:
Edit: Comme dans un commentaire demandé à juste titre ici quelques informations supplémentaires. Utilisez le include
tag
<include
android:layout_width="match_parent"
android:layout_height="wrap_content"
layout="@layout/yourlayout" />
pour inclure la mise en page que vous souhaitez réutiliser.
Consultez ce lien ...
<include />
balise, cependant, vous pouvez le faire en utilisant le code java. voir la réponse de Phileo99 ci-dessous pour savoir comment obtenir une référence à la mise en page incluse. et vous pouvez ensuite modifier son contenu.
Notez que si vous incluez android:id...
dans la <include />
balise, il remplacera tout identifiant défini dans la mise en page incluse. Par exemple:
<include
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/some_id_if_needed"
layout="@layout/yourlayout" />
yourlayout.xml:
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/some_other_id">
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/button1" />
</LinearLayout>
Ensuite, vous référeriez cette mise en page incluse dans le code comme suit:
View includedLayout = findViewById(R.id.some_id_if_needed);
Button insideTheIncludedLayout = (Button)includedLayout.findViewById(R.id.button1);
Utilisez une <include />
balise.
<include
android:id="@+id/some_id_if_needed"
layout="@layout/some_layout"/>
Lisez également les articles sur la création de composants d'interface utilisateur réutilisables et la fusion de dispositions .
À partir de documents officiels sur la réutilisation des mises en page
Bien qu'Android propose une variété de widgets pour fournir des éléments interactifs petits et réutilisables, vous devrez peut-être également réutiliser des composants plus volumineux qui nécessitent une mise en page spéciale. Pour réutiliser efficacement des mises en page complètes, vous pouvez utiliser la balise pour incorporer une autre mise en page dans la mise en page actuelle.
Voici mon fichier header.xml que je peux réutiliser en utilisant la balise include
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#FFFFFF"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:gravity="center"
android:text="@string/app_name"
android:textColor="#000000" />
</RelativeLayout>
Non j'utilise le balise XML pour ajouter une autre mise en page à partir d'un autre fichier XML.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#f0f0f0" >
<include
android:id="@+id/header_VIEW"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
layout="@layout/header" />
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:background="#ffffff"
android:orientation="vertical"
android:padding="5dp" >
</LinearLayout>
Because I want to reuse a ProgressBar
quel problème vient?
En savoir plus en utilisant ce lien https://developer.android.com/training/improving-layouts/reusing-layouts.html
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".Game_logic">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:id="@+id/text1"
android:textStyle="bold"
tools:text="Player " />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textStyle="bold"
android:layout_marginLeft="20dp"
android:id="@+id/text2"
tools:text="Player 2" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
Blockquote
Au-dessus de la mise en page, vous pouvez l'utiliser dans d'autres activités en utilisant
<?xml version="1.0" encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".SinglePlayer">
<include layout="@layout/activity_game_logic"/>
</androidx.constraintlayout.widget.ConstraintLayout>