Festlegen von textColor in TextView in der Hauptlayoutdatei layout/main.xml ohne Verweis auf die Datei colors.xml. (Es will ein #RRGGBB statt @color/text_color)

Lesezeit: 2 Minuten

Benutzer-Avatar
Benutzer657019

Ich versuche, einige allgemeine Farben für ein Programm festzulegen, das ich schreibe. Ich habe eine colors.xml-Datei erstellt und versuche, die Farben direkt aus der layout.xml-Datei zu referenzieren. Ich glaube, ich mache das richtig, aber es gibt mir den folgenden Fehler:

Color value '@colors/text_color' must start with #

Hier ist meine res/values/colors.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="background_color">#888888</color>
    <color name="text_color">#00FFFF</color>
</resources>

Hier ist meine res/layout/main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" 
    android:orientation="vertical">
<TextView  
    android:layout_width="fill_parent" 
    android:text="@string/hello" 
    android:layout_height="wrap_content" 
    android:id="@+id/TextView01" 
    android:textColor="@colors/text_color"/>
</LinearLayout>

Ich habe mir einige Referenzen auf der Android-Entwicklerseite angesehen: Weitere Ressourcentypen: Farbe und diesen Code gefunden:

Beispiel: XML-Datei gespeichert unter res/values/colors.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <color name="opaque_red">#f00</color>
   <color name="translucent_red">#80ff0000</color>
</resources>

Dieser Anwendungscode ruft die Farbressource ab:

Resources res = getResources();
int color = res.getColor(R.color.opaque_red);

Dieses Layout-XML wendet die Farbe auf ein Attribut an:

<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:textColor="@color/translucent_red"
    android:text="Hello"/>

Ich denke, meine beiden XML-Dateien folgen diesem Beispiel ziemlich genau – der einzige Unterschied besteht jedoch darin, dass ich keinen Anwendungscode verwendet habe, um die Farbressource abzurufen. Ich glaube nicht, dass dies notwendig ist (aber es ist ein Unterschied.) Ich dachte, ich würde sehen, ob jemand ähnliche Probleme oder eine Lösung hat? oder ist das ein bug?

Ich habe letzte Woche alle meine Android-SDK-Dateien (und das Eclipse-Plugin) aktualisiert, daher glaube ich, dass sie die neuesten sind.

Eine Variation, die nur den Standardfarbcode verwendet:

android:textColor="#ff0000"

Benutzer-Avatar
Renaud

Nach dem Experimentieren an diesem Fall:
android:textColor="@colors/text_color" ist da falsch @color ist nicht vom Dateinamen abhängig. Sie können Ihre Ressourcendatei foobar.xml nennen, es spielt keine Rolle, aber wenn Sie einige Farben darin definiert haben, können Sie mit darauf zugreifen @color/some_color.

Aktualisieren:

Dateispeicherort: res/values/colors.xml Der Dateiname ist beliebig. Der Name des Elements wird als Ressourcen-ID verwendet. (Quelle)

Sie haben einen Tippfehler in Ihrem XML; es sollte sein:

android:textColor="@color/text_color"

das ist “@color” ohne das ‘s’.

Benutzer-Avatar
Rang

Sie sollten textcolor in xml schreiben als

android:textColor="@color/text_color"

oder

android:textColor="#FFFFFF"

1053990cookie-checkFestlegen von textColor in TextView in der Hauptlayoutdatei layout/main.xml ohne Verweis auf die Datei colors.xml. (Es will ein #RRGGBB statt @color/text_color)

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy