Ich versuche, alle meine Stile in ein Thema für meine App zu setzen. Ich habe jedoch Probleme beim Ändern der textColor in einem TextView. Dies ist von meiner attrs.xml Datei.Android TextView change textColor mit Thema
<?xml version="1.0" encoding="utf-8"?>
<declare-styleable name="flat">
<attr name="detail_name_view" format="reference" />
</declare-styleable>
Dieses von meiner styles.xml ist Datei
<style name="flat_theme" parent="android:Theme.NoTitleBar">
<item name="detail_name_view">@style/flat_detail_name</item>
</style>
<style name="flat_detail_name" parent="@android:style/Widget.TextView">
<item name="android:textAppearance">?android:attr/textAppearanceMedium</item>
<item name="android:textColor">@color/detail_group_black</item>
<item name="android:textSize">16sp</item>
<item name="android:singleLine">true</item>
<item name="android:ellipsize">end</item>
</style>
Und das ist aus meiner layout.xml Datei
<TextView
android:id="@+id/detail_name"
style="?detail_name_view"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:layout_gravity="left|center_vertical"
android:layout_marginLeft="5dp"
android:layout_weight="1"
android:gravity="left|center_vertical" />
Ich habe auch das Manifest richtig eingerichtet mit dem folgenden.
<application
android:name="com.example.blah"
android:icon="@drawable/blah"
android:label="@string/app_name"
android:theme="@style/flat_theme"
Die Farbe wird nie in "@ color/detail_group_black" geändert. Fehle ich etwas Einfaches? Oder ist das Problem, dass Android bereits ein TextColor-Attribut für die TextView erstellt und deshalb der Stil nicht überschreibt? Meine Attribut-Thema-Strategie scheint gut für den Rest der App zu funktionieren, aber nicht das. Irgendwelche Ideen? Danke im Voraus.
Auch, wenn es geholfen werden kann, würde ich lieber nicht eine benutzerdefinierte TextView-Klasse nur für diese Änderung erstellen: es ist ein ziemlich großes Projekt, und ich bin mir nicht sicher, welche Art von Problemen könnte ich laufen, wenn ich TextView für erweitern alles.
bearbeiten Auch wenn ich die Textview ändern style = "@ style/flat_detail_name_view" zu haben, es funktioniert gut. Der Grund, warum ich das nicht tun möchte, ist, dass ich das Aussehen dieser Textansichten ändern kann, indem ich einfach das Thema ändere. Die Verwendung von style = "? Something_else" funktioniert bei allen meinen anderen Ansichten, also verstehe ich das wirklich nicht und vermisse wahrscheinlich etwas Einfaches?
Was ist "? Detail_name_view" in einem TextView-Stil? –
style = "? Detail_name_view" ist eine Referenz auf das detail_name_view-Attribut. –