Usando o namespace do aplicativo com estilo

103

Vou dar um exemplo para demonstrar o ponto principal.

Imagine que meu aplicativo tenha vários FloatingActionButtons. Conseqüentemente, desejo criar um estilo e reutilizá-lo. Então, eu faço o seguinte:

<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>

O problema que estou tendo é que o código não está compilando porque está reclamando

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

Eu tentei trazer o namespace por meio da resourcestag, mas não está funcionando

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

Alguma ideia de como posso fazer isso funcionar?

Nouvel Travay
fonte
1
Relacionado: stackoverflow.com/questions/6860886/…
styler1972

Respostas:

229

Para appnamespace, você não precisa especificar app:<property name>. Apenas <property name>é suficiente.

Por exemplo

<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>

E para layout_anchorGravityvocê precisa configurá-lo no arquivo XML onde você está definindo o botão de ação flutuante.

dex
fonte
Impressionante! obrigado por ajudar. Correção menor: você também pode definir layout_anchorGravityna página de estilo. Funciona como<item name="layout_anchorGravity">end|bottom</item>
Nouvel Travay
você salvou o dia! E aquele a ser definido localmente é layout_anchor. +1!
Nouvel Travay