Para indicar al usuario de mi aplicación qué campo tiene actualmente el foco, estoy intentando cambiar el color de fondo de algunos de mis campos, dependiendo del estado actual. Sin embargo, tengo problemas para entender los recursos de la lista de estados de color de androides:¿Cómo especificar el color de fondo en los recursos de la lista de estados de color?
me encontré ejemplo (lo siento, ya no funciona URL) y si lo intento exactamente la misma, es decir, si quiero adaptar el textColor, las cosas hacer trabajo. Sin embargo, si lo intento una única ligeramente diferente cosa, a saber adaptar la fondo color, cosas No trabajo y no entiendo por qué? ¿Por qué es esto tan inconsistente?
Para que sea más fácil de entender lo que estoy tratando de hacer, añado mi misc. archivos .xml:
El archivo AndroidManifest.xml
:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="mmo.android.test"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".Test"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
El Test-Activity
:
package mmo.android.test;
import android.app.Activity;
import android.os.Bundle;
public class Test extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
El res/values/strings.xml
:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, Test!</string>
<string name="app_name">Test</string>
</resources>
res/color/button_test_color.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="#f0f"/> <!-- pressed -->
<item android:state_focused="true" android:color="#ff0"/> <!-- focused -->
<item android:color="#000"/> <!-- default -->
</selector>
y finalmente mi res/layout/main.xml
archivo:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="foobar"
android:textColor="@color/button_test_color"
android:background="#f00"
/>
<!--
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="foobar"
android:textColor="#f00"
android:background="@color/button_test_color"
/>
-->
</LinearLayout>
Si funciono esto como se muestra aquí, funciona, es decir consigo un botón cuyo color cambia según si el botón se centra texto, prensado, etc.
Si descomentar el botón inferior, donde acabo volteado los valores de los atributos de textColor y antecedentes consigo una excepción, indicando
... <item> tag requires a 'drawable' attribute or child tag defining a drawable
¿Qué diablos me falta aquí? ¿Por qué esa lista de estado de color es aceptable como color de texto pero no como color de fondo? ¿Cómo se especifica el color de fondo de una vista dependiendo del estado de la vista?
Forma más inf. sobre el uso de un recurso dibujable, esta [pregunta se ha hecho antes] (http://stackoverflow.com/questions/3506319/android-linearlayout-with-color-resource-what-am-i-doing-wrong). – frayser
No sé por qué esta respuesta se ha marcado como correcta. El autor de la pregunta parece haber seguido los [documentos de Android] (http://developer.android.com/guide/topics/resources/color-list-resource.html) que indican que @color debe funcionar bien con un archivo xml en el directorio res/color y se hace referencia por nombre de archivo. – JulianSymes
Estoy aún más sorprendido de que esta fue la respuesta elegida cuando NO FUNCIONA. -1 – Sotti