Usando el espacio de nombres de la aplicación con estilo

2 minutos de lectura

Voy a dar un ejemplo para demostrar el punto más importante.

Imagina que mi aplicación tiene una cantidad de FloatingActionButtons. En consecuencia, quiero crear un estilo y reutilizarlo. Así que hago lo siguiente:

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

El problema que tengo es que el código no se compila porque se queja de

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

Intenté traer el espacio de nombres a través del resources etiqueta pero eso no funciona

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

¿Alguna idea de cómo podría hacer que esto funcione?

  • Relacionado: stackoverflow.com/questions/6860886/…

    – tyler

    2 oct 2017 a las 21:07

avatar de usuario
dex

Para app espacio de nombres que no necesita especificar app:<property name>. Sólo <property name> es suficiente.

Por ejemplo

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

Y para layout_anchorGravity debe configurarlo en el archivo XML donde está definiendo el botón de acción flotante.

  • ¡Impresionante! gracias por ayudar. Corrección menor: puedes definir layout_anchorGravity en la página de estilo también. funciona como <item name="layout_anchorGravity">end|bottom</item>

    – Nuevo viaje

    5 sep 2016 a las 20:36

  • ¡salvaste el día! Y el que se definirá localmente es layout_anchor. +1!

    – Nuevo viaje

    5 sep 2016 a las 20:41

  • Bueno, al hacerlo resolvió el error mencionado por OP. Incluso predictor de texto para styles.xml sugiere las propiedades; pero de alguna manera es como si estas propiedades no se aplicaran en absoluto después de construir… Me pregunto por qué…

    – Sebas SBM

    8 jun a las 17:20

Puede utilizar directamente la propiedad sin 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>

¿Ha sido útil esta solución?