Um dem Benutzer meiner App einen Hinweis darauf zu geben, welches Feld momentan den Fokus hat, versuche ich die Hintergrundfarbe einiger meiner Felder abhängig vom aktuellen Status zu ändern. Ich habe jedoch Probleme, Androids Color State List Resources zu verstehen:Wie kann ich Hintergrundfarbe in Ressourcen für Farbstatuslisten angeben?
ich fand Beispiel (sorry, URL nicht mehr funktioniert) und wenn ich genau gleich, dh versuchen, wenn ich die Textfarbe anpassen will, Dinge Arbeit tun. Allerdings, wenn ich versuche, nur etwas anders Sache, nämlich die Hintergrundfarbe Farbe anzupassen, Dinge nicht arbeiten und ich verstehe nicht warum? Warum ist das so inkonsequent?
Um es einfacher zu verstehen, was ich versuche zu tun, füge ich meine Misc an. .xml-Dateien:
Die AndroidManifest.xml
Datei:
<?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>
Die 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);
}
}
Die 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>
und schließlich meine res/layout/main.xml
Datei:
<?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>
Wenn ich dies ausführen, wie hier gezeigt, es funktioniert, also erhalte ich eine Schaltfläche, deren Textfarbe ändert, je nachdem, ob die Taste fokussiert ist, gedrückt wird, usw.
Wenn ich die untere Taste Kommentar-, wo ich blätterte nur die Attributwerte für Textfarbe und Hintergrund ich eine Ausnahme erhalten, die besagt,
... <item> tag requires a 'drawable' attribute or child tag defining a drawable
Was zum Teufel vermisse ich hier? Warum ist diese Farbzustandsliste als Textfarbe akzeptabel, aber nicht als Hintergrundfarbe? Wie spezifiziert man die Hintergrundfarbe einer Ansicht abhängig vom Zustand der Ansicht?
Form mehr inf. bei der Verwendung einer aufzeichnbaren Ressource wurde diese [Frage zuvor gestellt] (http://stackoverflow.com/questions/3506319/android-linearlayout-with-color-resource-what-am-i-doing-wrong). – frayser
Ich weiß nicht, warum diese Antwort als richtig markiert wurde. Der Fragesteller scheint den [Android-Dokumenten] (http://developer.android.com/guide/topics/resources/color-list-resource.html) gefolgt zu sein, die anzeigen, dass @color mit einer XML-Datei in der res/color-Verzeichnis und wird mit Dateiname bezeichnet. – JulianSymes
Ich bin noch mehr überrascht, dass dies die gewählte Antwort war, wenn IT überhaupt nicht funktioniert. -1 – Sotti