Utiliser l'espace de noms d'application avec style

103

Je vais donner un exemple pour démontrer le plus grand point.

Imaginez que mon application dispose d'un certain nombre de FloatingActionButtons. Par conséquent, je souhaite créer un style et le réutiliser. Alors je fais 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, c'est que le code ne se compile pas car il se plaint de

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

J'ai essayé d'introduire l'espace de noms via la resourcesbalise mais cela ne fonctionne pas

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

Des idées sur la façon dont je pourrais faire fonctionner cela?

Nouvel Travay
la source
1
En relation: stackoverflow.com/questions/6860886/…
styler1972

Réponses:

229

Pour l' appespace de noms, vous n'avez pas besoin de spécifier app:<property name>. C'est juste <property name>assez.

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_anchorGravityvous devez le définir dans un fichier XML où vous définissez le bouton d'action flottant.

dex
la source
Impressionnant! Merci pour ton aide. Correction mineure: vous pouvez également définir layout_anchorGravitysur la page de style. Il fonctionne comme<item name="layout_anchorGravity">end|bottom</item>
Nouvel Travay
vous avez sauvé la journée! Et celui à définir localement est layout_anchor. +1!
Nouvel Travay