144 votes

Utilisation de l'espace de nom App dans le style

Je vais donner un exemple pour illustrer mon propos.

Imaginons que mon application comporte un certain nombre de boutons d'action flottants. Par conséquent, je veux créer un style et le réutiliser. Je fais donc ce qui suit :

<style name="FabStyle” parent ="Widget.Design.FloatingActionButton">
    <item name="android:layout_width">wrap_content</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:layout_margin">16dp</item>
    <item name="app:backgroundTint">@color/accent</item>
    <item name="app:layout_anchorGravity">end|bottom</item>
</style>

Le problème que j'ai est que le code ne compile pas car il se plaint de

Error:(40, 5) No resource found that matches the given name: attr 'app:backgroundTint'.

J'ai essayé de faire entrer l'espace de nom par le biais de la resources mais cela ne fonctionne pas

<resources
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android"
    >

Avez-vous une idée de la façon dont je pourrais faire fonctionner ce système ?

1 votes

321voto

dex Points 2149

Pour app vous n'avez pas besoin de spécifier app:<property name> . Juste <property name> est suffisant.

Par exemple

<style name="FabStyle" parent="Widget.Design.FloatingActionButton"> 
    <item name="android:layout_width">wrap_content</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:layout_margin">16dp</item>
    <item name="backgroundTint">@color/accent</item>
    <item name="layout_anchorGravity">end|bottom</item>
</style>

Et pour layout_anchorGravity vous devez le définir dans le fichier XML où vous définissez le bouton d'action flottant.

0 votes

Génial ! Merci pour votre aide. Petite correction : vous pouvez définir layout_anchorGravity sur la page de style également. Cela fonctionne comme suit <item name="layout_anchorGravity">end|bottom</item>

0 votes

Vous avez sauvé la journée ! Et celui qui doit être défini localement est layout_anchor . +1 !

4voto

Maneesh A Points 11

Vous pouvez utiliser directement le bien sans app

<style name="FabStyle” parent ="Widget.Design.FloatingActionButton">
    <item name="android:layout_width">wrap_content</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:layout_margin">16dp</item>
    <item name="backgroundTint">@color/accent</item>
    <item name="layout_anchorGravity">end|bottom</item>
</style>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X