Po przeczytaniu przez References To Theme Attributes próbuję odwołać się do wartości atrybutu w ustawionym przeze mnie niestandardowym motywie.Zastępowanie odwoływanych atrybutów stylu
Ja stosując styl zdefiniowany przez użytkownika do CheckedTextView
<CheckedTextView
android:id="@+id/contactInfo"
style="@style/ListViewCheckedTextViewRowStyle" >
</CheckedTextView>
styl zdefiniowany przez użytkownika jest zdefiniowany jako:
<style name="ListViewCheckedTextViewRowStyle" parent="@style/ListViewRowStyle">
<item name="android:checkMark">?android:listChoiceIndicatorMultiple</item>
</style>
Mój motyw stworzyłem jest zdefiniowany jako:
<style name="Theme.Yellowgreen" parent="android:Theme.Holo.Light.DarkActionBar">
<item name="android:listChoiceIndicatorMultiple">@drawable/btn_check_holo_light</item>
</style>
Jednak wyświetlana stylistyka checkMark to drawab domyślnego urządzenia le, a nie mój zdefiniowany przez użytkownika drawowalny.
Jedynym sposobem mogę mieć mój odkształcalne wyświetlany jest z:
<style name="ListViewCheckedTextViewRowStyle" parent="@style/ListViewRowStyle">
<item name="android:checkMark">@drawable/btn_check_holo_light</item>
</style>
Ale pokonuje cały cel nadrzędny tego atrybutu, zwłaszcza, że chciałbym zmienić to atrybut w wielu tematów.
ja ustawienie motywu w metodzie onCreate()
z moich Activity
jak ten:
public void onCreate(Bundle savedInstanceState) {
this.setTheme(R.style.Theme_Yellowgreen);
super.onCreate(savedInstanceState);
// ...
}
Próbowałem też ustawić motyw w AndroidManifest.xml złożyć jak:
<application android:theme="@style/Theme.Yellowgreen" >
ale nie działa. Co może być nie tak?
Aktualizacja
Właśnie stworzył małą przykładowy projekt i wygląda kodu napisałem powyżej działa. Muszę więc mieć inne style, które nadpisują tę właściwość lub może ma to związek z plikami xml mojego układu.
W moim dużym projekcie mam dwa Fragments
w ramach Activity
. Zarówno Fragments
mają Listviews
wspierane przez Adapters
. W Fragment A
sposób według Adapter
getView()
następująco:
public View getView(final int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = mInflater.inflate(R.layout.contact_entry, null);
}
//...
return convertView;
}
w Fragment B
sposób według Adapter
getView()
następująco:
public View getView(final int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = mInflater.inflate(R.layout.list_item, parent, false);
}
//...
return convertView;
}
Układy są zdefiniowane w następujący sposób:
list_item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/list_item"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<include layout="@layout/list_item_header" />
<include layout="@layout/contact_entry" />
<View android:id="@+id/list_divider"
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@android:drawable/divider_horizontal_dark" />
</LinearLayout>
list_item_header.xml
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/header_text"
android:layout_width="match_parent"
android:layout_height="25dip"
android:background="@color/dark_blue"
android:gravity="center_vertical"
android:paddingLeft="6dip"
android:textColor="@color/white"
android:textSize="14sp"
android:textStyle="bold" />
contact_entry.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/contactEntry"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?android:attr/listPreferredItemHeight"
android:orientation="horizontal" >
<QuickContactBadge
android:id="@+id/contactPic"
style="@style/ContactPicStyle" />
<CheckedTextView
android:id="@+id/contactInfo"
style="@style/ListViewCheckedTextViewRowStyle" >
</CheckedTextView>
</LinearLayout>
Z jakiegoś powodu w Fragment B
Tematyczna atrybut haczykiem nie renderuje poprawnie podczas gdy w Fragment A
, zaznaczenie używa bieżącego żółto Skórka i jest stylizowany poprawnie. Dlaczego tak się dzieje?
Czy w manifeście określono motyw _YellowGreen_? – dominus
Właśnie stworzyłem przykładowy projekt, aby przetestować twoje pliki stylów i wszystko działa dobrze dla mnie. Więc drugie pytanie _dominus'_: czy w manifeście ustawiłeś motyw aktywności na "YellowGreen"? – Idolon
hej @dominus i @Idolon, zaktualizowałem pytanie. Próbowałem ustawić temat działania na dwa różne sposoby, ale nie udało się nadpisać atrybutu stylu "android: listChoiceIndicatorMultiple". – toobsco42