Nach dem Lesen von References To Theme Attributes versuche ich, den Wert eines Attributs in meinem benutzerdefinierten Thema, das ich festgelegt habe, zu verweisen.Überschreiben referenzierter Stilattribute
ich einen benutzerdefinierten Stil zu einem Stil CheckedTextView
<CheckedTextView
android:id="@+id/contactInfo"
style="@style/ListViewCheckedTextViewRowStyle" >
</CheckedTextView>
Die benutzerdefinierte Anwendung ist wie folgt definiert:
<style name="ListViewCheckedTextViewRowStyle" parent="@style/ListViewRowStyle">
<item name="android:checkMark">?android:listChoiceIndicatorMultiple</item>
</style>
Mein Thema, das ich geschaffen ist wie folgt definiert:
<style name="Theme.Yellowgreen" parent="android:Theme.Holo.Light.DarkActionBar">
<item name="android:listChoiceIndicatorMultiple">@drawable/btn_check_holo_light</item>
</style>
Das angezeigte checkMark-Design ist jedoch das Drawab des Standardthemas des Geräts le und nicht mein benutzerdefinierbares Zeichen.
Die einzige Art, wie ich meine ziehbar angezeigt haben kann, ist, mit:
<style name="ListViewCheckedTextViewRowStyle" parent="@style/ListViewRowStyle">
<item name="android:checkMark">@drawable/btn_check_holo_light</item>
</style>
Aber das Niederlage des ganzen Zwecks dieses Attribute der überwiegenden, zumal ich dieses Attributs in mehreren Themen außer Kraft setzen möchte.
ich das Thema in der onCreate()
Methode meiner Activity
wie dies setze:
public void onCreate(Bundle savedInstanceState) {
this.setTheme(R.style.Theme_Yellowgreen);
super.onCreate(savedInstanceState);
// ...
}
Ich versuchte auch in der AndroidManifest.xml das Thema zu setzen wie file:
<application android:theme="@style/Theme.Yellowgreen" >
Aber das hat nicht funktioniert. Was könnte schief gehen?
aktualisieren
Ich habe gerade ein kleines Projekt Probe und es sieht aus wie der Code, den ich oben gepostet funktioniert. Also muss ich einige andere Stile haben, die diese Eigenschaft überschreiben, oder vielleicht hat es mit meinen Layout-XML-Dateien zu tun.
In meinem großen Projekt habe ich zwei Fragments
innerhalb einer Activity
. Beide Fragments
haben Listviews
unterstützt von Adapters
. In Fragment A
die getView()
Verfahren des Adapter
ist wie folgt:
public View getView(final int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = mInflater.inflate(R.layout.contact_entry, null);
}
//...
return convertView;
}
In Fragment B
die getView()
Verfahren des Adapter
ist wie folgt:
public View getView(final int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = mInflater.inflate(R.layout.list_item, parent, false);
}
//...
return convertView;
}
Die Layouts sind wie folgt definiert:
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>
Aus irgendeinem Grund in Fragment B
die Themen Häkchen Attribut nicht richtig machen, während in Fragment A
verwendet das Häkchen, um die aktuellen Themen und Yellowgreen richtig gestylt. Warum würde das passieren?
Haben Sie Ihr _YellowGreen_ Thema im Manifest angegeben? – dominus
Ich habe gerade ein Beispielprojekt erstellt, um Ihre Style-Dateien zu testen und alles funktioniert gut für mich. Also ich zweite _dominus'_ Frage: Haben Sie Aktivitäts-Thema zu 'YellowGreen' im Manifest gesetzt? – Idolon
hey @dominus und @ Idolon, habe ich die Frage aktualisiert. Ich habe versucht, das Aktivitätsthema auf zwei verschiedene Arten zu setzen, aber es ist mir nicht gelungen, das Attribut 'android: listChoiceIndicatorMultiple' zu überschreiben. – toobsco42