Comment lier une vue utilisateur à une mise en page utilisateur?
sobes.tech IA
Réponse de l'IA
Il existe plusieurs méthodes :
-
Utilisation du constructeur avec un ensemble d'attributs
AttributeSet: C'est la méthode la plus courante. Dans le constructeur de la vue, vous pouvez lire les attributs du balisage XML et les appliquer.public class MyCustomView extends View { public MyCustomView(Context context, AttributeSet attrs) { super(context, attrs); // Lecture des attributs depuis attrs TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.MyCustomView); // Récupération des valeurs d'attributs, par exemple : // int someValue = a.getInt(R.styleable.MyCustomView_someAttribute, defaultValue); a.recycle(); // Il est important de libérer le TypedArray // Initialisation de la vue basée sur les attributs lus // ... } // ... autres constructeurs et méthodes }Lors de la définition d'un layout personnalisé en XML, vous pouvez utiliser ces attributs :
<com.example.app.MyCustomView android:layout_width="wrap_content" android:layout_height="wrap_content" app:someAttribute="someValue" /> -
Inflation du layout à l'intérieur de la vue : Si la vue se compose de plusieurs autres vues, vous pouvez les infler à partir d'un fichier XML séparé dans la vue personnalisée.
public class MyCompositeView extends LinearLayout { public MyCompositeView(Context context, AttributeSet attrs) { super(context, attrs); LayoutInflater.from(context).inflate(R.layout.my_custom_layout, this, true); // Vous pouvez maintenant trouver des éléments dans my_custom_layout // TextView myTextView = findViewById(R.id.myTextView); // ... } // ... autres constructeurs et méthodes }my_custom_layout.xmlpourrait ressembler à ceci :<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <TextView android:id="@+id/myTextView" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Bonjour, layout personnalisé !" /> <!-- autres éléments du layout --> </LinearLayout>Ensuite, ce layout personnalisé
MyCompositeViewest utilisé dans un autre fichier XML :<com.example.app.MyCompositeView android:layout_width="match_parent" android:layout_height="wrap_content" />
Le choix de la méthode dépend de la complexité de la vue personnalisée : pour des vues simples avec peu d'éléments, la première méthode suffit ; pour des vues composées avec une structure interne plus complexe, la seconde méthode est plus appropriée.