Variables dans les ressources XML – passer des valeurs de parent à enfant

J'essaie de réutiliser des formes primordiales et de composer une grande partie de mon interface utilisateur à l'aide de ces éléments XML déclaratifs.

Comment créer un attribut Android variable?

Mais je ne veux pas créer un fichier XML séparé pour chaque valeur d'attribut, et leurs permutations, et dans le processus, dupliquer une grande partie du travail.

  • L'application ne se bloque que dans la version
  • Fichier des constantes Java
  • Changez le coin du rayon de manière programmable par programme
  • Bouton - Modifier la couleur d'arrière-plan sur le clic
  • Lire / écrire un fichier .txt avec des caractères spéciaux
  • Lire les données du périphérique bluetooth dans Android
  • Par exemple, je voudrais que le consommateur de cette forme puisse définir la valeur du rayon Android: rayon?

    <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <gradient android:startColor="#449def" android:endColor="#2f6699" android:angle="270"/> <stroke android:width="1dp" android:color="#2f6699"/> <corners android:radius="3dp"/> </shape> 

    Définir l'attribut de la consommation de XML parent?

     <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:drawable="@drawable/shape_box_round_blue_uniform" /> <!-- How to set the corner radius here? --> <item android:drawable="@drawable/shape_box_round_blue" /> </selector> 

    Solutions?

    • Dans la mesure du possible, je ne souhaite pas utiliser de code Java en arrière / éviter la nécessité de créer des contrôles / classes personnalisés
    • L'utilisation de ressources de dimension peut-être une avenue fructueuse?

    One Solution collect form web for “Variables dans les ressources XML – passer des valeurs de parent à enfant”

    Vous pouvez créer

    Attributs de style

    , Ce qui, je pense, c'est ce que vous recherchez. Ils sont essentiellement des attributs variables. Par exemple, vous pouvez l'utiliser dans vos themes.xml

     <?xml version="1.0" encoding="utf-8"?> <resources> <!-- You can define attributes here --> <attr name="button_radius" format="reference" /> </resources> 

    Ce qui définit une référence de variable appelée: button_radius Cela peut être utilisé dans Styles, ou dans les fichiers xml de mise en page:

     <!-- You can use them like so: --> <style name="MyApp.Theme1" parent="android:Theme.Holo.Light"> <item name="button_radius">12</item> </style> <style name="MyApp.Theme2" parent="android:Theme.Holo.Light"> <item name="button_radius">36</item> </style> 

    De cette façon, en changeant le thème, vous pouvez utiliser les différentes valeurs pour votre rayon. Voici un exemple NON TESTÉ de la façon dont vous modifieriez votre forme:

     <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <gradient android:startColor="#449def" android:endColor="#2f6699" android:angle="270"/> <stroke android:width="1dp" android:color="#2f6699"/> <corners android:radius="?button_radius"/> <!-- NOTE the ?button_radius--> </shape> 

    Les utilisateurs peuvent simplement appliquer un style différent pour utiliser différents attributs. Je ne sais pas si cet exemple répond à votre question complet, mais il y a beaucoup de choses que vous pouvez faire en déclarant des attributs dans vos thèmes. Ces attributs sont des références dynamiques. Pour plus d'informations sur les possibilités, consultez cet article.

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.