Próbuję umieścić wszystkie moje style w temacie dla mojej aplikacji. Mam jednak problem z zamianą textColor na TextView. To jest z mojego pliku attrs.xml.Android TextView zmień tekst Kolor z motywem
<?xml version="1.0" encoding="utf-8"?>
<declare-styleable name="flat">
<attr name="detail_name_view" format="reference" />
</declare-styleable>
To z mojego styles.xml plik
<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>
A to z mojego layout.xml plików
<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" />
Mam również manifest prawidłowo skonfigurowany z następującymi.
<application
android:name="com.example.blah"
android:icon="@drawable/blah"
android:label="@string/app_name"
android:theme="@style/flat_theme"
Kolor nigdy nie zostanie zmieniony na "@ color/detail_group_black". Czy brakuje mi czegoś prostego? A może problem polega na tym, że Android już tworzy atrybut textColor dla TextView i dlatego styl go nie przesłania? Moja strategia atrybut-motyw wydaje się działać dobrze dla reszty aplikacji, ale nie dla tego. Jakieś pomysły? Z góry dziękuję.
Ponadto, jeśli można uzyskać pomoc, wolałabym nie tworzyć niestandardowej klasy TextView tylko dla tej zmiany: jest to dość duży projekt i nie jestem pewien, jakie problemy mógłbym napotkać, jeśli rozszerzę TextView na wszystko.
Edit Również, jeśli mogę zmienić TextView mieć style = "@ Styl/flat_detail_name_view", to działa dobrze. Powodem, dla którego nie chcę tego robić, jest możliwość zmiany wyglądu tych odsłon po prostu przez zmianę motywu. Używanie style = "? Something_else" działa na wszystkich moich innych widokach, więc naprawdę tego nie rozumiem i prawdopodobnie brakuje mi czegoś prostego?
Co to jest "? Detail_name_view" w stylu TextView? –
style = "? Detail_name_view" jest odniesieniem do atrybutu detail_name_view. –