/ / Comment remplacer (ou masquer) les attributs de style définis dans le projet de bibliothèque Android? - android, android-layout, styles, substitution, android-library

Comment remplacer (ou masquer) les attributs de style définis dans le projet de bibliothèque Android? - android, android-layout, styles, substitution, android-library

J'ai un ensemble d'applications similaires. J'ai extrait des ressources et du code communs dans le projet de bibliothèque et les applications remplacent simplement ce dont elles ont besoin. Dans ma bibliothèque, le style suivant est défini:

<style name="ListItemText">
<item name="android:layout_toRightOf">@id/preview_image</item>
<item name="android:textStyle">bold</item>
<item name="android:textSize">@dimen/previewTextSize</item>
</style>

Comme vous pouvez le voir, il contient android:layout_toRightOf attribuer comme ce style serait appliqué au texte de la ligne ListView qui devrait être affiché à la droite de l'image dans cette ligne.
Toutefois, dans une de mes applications, je souhaite afficher le texte situé sous l'image. ListItemText le style dans cette application doit être défini pour remplacer android:layout_toRightOf attribuer une valeur et la remplacer par android:layout_below?

Si je le définis comme:

<style name="ListItemText">
<item name="android:layout_below">@id/preview_image</item>
</style>

il affiche le texte à droite et en dessous de l'image, en résumant efficacement les attributs des styles XML de bibliothèque et de style d'application.

p.s .: Une solution possible à mon problème serait de se débarrasser de android:layout_toRightOf dans les styles et déplacez-le vers le layout xmlau lieu. Ensuite, dans l'application cible, cette disposition peut être redéfinie / remplacée. Mais je recherche une solution basée sur le style, car elle pourrait fournir un moyen plus simple et direct de remplacer les attributs.
(Je peux aussi utiliser le style hérité avec le parent attribut, mais cela nécessiterait à nouveau une mise en page prioritaire dans l'application, ce que j'essaie d'éviter).

Réponses:

6 pour la réponse № 1

Pour désactiver android:layout_toRightOf, vous pouvez le configurer pour @null. Si votre application définit le ListItemText style comme suit, il devrait fonctionner comme vous le souhaitez:

<style name="ListItemText">
<item name="android:layout_toRightOf">@null</item>
<item name="android:layout_below">@id/preview_image</item>
</style>

0 pour la réponse № 2

Vous pouvez utiliser "parent" pour dériver un style spécialisé (voir http://developer.android.com/guide/topics/ui/themes.html), mais définir les mises en page de cette manière avec des styles ne me semble pas être la meilleure façon de résoudre ce problème. Il est correct de laisser des informations sur la mise en page dans les fichiers de mise en page.