Android LinearLayout con recurso de color: ¿Qué estoy haciendo mal?

Seguí este tutorial para crear una lista de estado de color para una vista de Android en particular. Sólo quiero resaltar cuando se hace clic para que el usuario sabe por qué la pantalla acaba de cambiar.

Cuando se visualiza la vista, obtengo el siguiente error:

Org.xmlpull.v1.XmlPullParserException: La línea de archivo XML binario # 3: etiqueta requiere un atributo "dibujable" o una etiqueta secundaria que define un dibujable

Mi color XML (en res / color / viewcolor.xml):

<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:color="#ff33ffff"/> <!-- pressed --> <item android:color="#ff000000"/> <!-- default --> </selector> 

Mi diseño XML (en res / layout / myview.xml):

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/myview" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="top" android:background="@color/viewcolor"> <!--crap in the layout--> </LinearLayout> 

¿Qué me perdí?

Recuerdo que trabajé alrededor de este error usando el estado dibujable en vez del color del estado. Por alguna razón el fondo de la disposición apenas no trabaja con colores stateful. Por lo tanto, intente crear un estado (por ejemplo, lista de forma dibujable con diferentes colores) y utilizarlo como fondo.

Res / drawable / pressed.xml:

 <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <solid android:color="#ff33ffff" /> </shape> 

Res / drawable / normal.xml:

 <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <solid android:color="#ff000000" /> </shape> 

Res / drawable / background.xml:

 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:drawable="@drawable/pressed" /> <item android:drawable="@drawable/normal" /> </selector> 

A continuación, utilice background.xml dibujable como fondo 🙂

En lugar de utilizar formas en su dibujable, puede utilizar el atributo android:drawable que acepta un recurso de color (por ejemplo, @ color / black).

Layout.xml

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/myview" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="top" android:background="@drawable/myDrawable"> <!-- other views in layout--> </LinearLayout> 

My_drawable.xml

 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <!-- focused --> <item android:state_focused="true" android:drawable="@color/YOUR_COLOR_HERE" /> <!-- focused and pressed--> <item android:state_focused="true" android:state_pressed="true" android:drawable="@color/YOUR_COLOR_HERE" /> <!-- pressed --> <item android:state_pressed="true" android:drawable="@color/YOUR_COLOR_HERE" /> <!-- default --> <item android:drawable="@color/YOUR_COLOR_HERE" /> </selector> 

En my_drawable.xml debe asegurarse de que los colores especificados se definen en res/values/colors.xml , o esto no funcionará.

Si desea utilizar una imagen en lugar de un cambio de color de un recurso de color a un recurso dibujable. Ejemplo:

 android:drawable="@color/YOUR_COLOR_HERE" android:drawable="@drawable/YOUR_IMAGE_HERE" 
  • No se puede iniciar uiautomatorviewer
  • Android incluye diseño debajo del elemento
  • La aplicación muestra error en el nuevo dispositivo (piruleta) pero funciona bien en mi dispositivo antiguo (kitkat)
  • Analizar Google plus login
  • FloatingActionButton clase no se puede instanciar
  • Establecer el enfoque de pulgar y presionado de forma programable mediante drawbar personalizado
  • El editor de diseño ya no funciona: Rendering Falló con un error conocido
  • Principiante Android Development: findViewById issue
  • El oyente global de diseño de Android se llama repetidamente en android
  • ¿Cómo puedo guardar mi mapa de bits correctamente por segunda vez?
  • Obtención de un usuario String en un cuadro de diálogo emergente
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.