auch mit Android Support v7 in meiner Anwendung enthalten
Hinzufügen
android:background="?android:attr/selectableItemBackground"
Wenn meine IDE, Eclipse, einen Fehler auslöst (der mich am Kompilieren hindert), wird mir mitgeteilt, dass selectableItemBackground nur für mindestens Api 11 und höher gilt.
Wie füge ich dieses Attribut einem Hintergrund in XML hinzu?
Nehmen Sie an, dass das Kopieren und Einfügen aus einer höheren Bibliothek keine Lösung ist
selectableItemBackground
in Version 7 definiert ist, indem ich auf android.support.v7.appcompat.R.attr schaue . Fragen Sie sich bei Ihrer zweiten Frage, wie ein benutzerdefiniertes Attribut funktioniert?android:
Namespace-Präfix zugegriffen . Dies schließt Support-Bibliotheken nicht ein, da es sich um Add-Ons handelt. Attribute werden in definiertattrs.xml
und inthemes.xml
und / oder festgelegtstyles.xml
. Wenn Sie also Ihr eigenes Drawable zuweisen würdenselectableItemBackground
, würden Sie denandroid:
Namespace nicht verwenden . Aber Sie werden, wenn das Drawable vom Android-System bereitgestellt wird.Hier ist selectedItemBackground. Sie finden es in /platforms/android-14/data/res/themes.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android" android:exitFadeDuration="@android:integer/config_mediumAnimTime"> <item android:state_window_focused="false" android:drawable="@color/transparent" /> <!-- Even though these two point to the same resource, have two states so the drawable will invalidate itself when coming out of pressed state. --> <item android:state_focused="true" android:state_enabled="false" android:state_pressed="true" android:drawable="@drawable/list_selector_background_disabled" /> <item android:state_focused="true" android:state_enabled="false" android:drawable="@drawable/list_selector_background_disabled" /> <item android:state_focused="true" android:state_pressed="true" android:drawable="@drawable/list_selector_background_transition" /> <item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/list_selector_background_transition" /> <item android:state_focused="true" android:drawable="@drawable/list_selector_background_focused" /> <item android:drawable="@color/transparent" /> </selector>
und Sie finden Drawables in Ihrem Android SDK-Verzeichnis
../platforms/android-14/data
quelle
res
Ordner kopieren .Kein Experte auf diesem Gebiet, aber es scheint, dass Sie ein plattformversionsbasiertes Theming benötigen. Der offizielle Leitfaden erklärt diesen Prozess ziemlich gut, denke ich.
Sie müssen verschiedene XML - Dateien für jede Version erstellen und speichern sie in
res/values-v7
,res/values-v11
etc. Dann diese Stile für Ihre Ansichten verwenden. Etwas wie das:in
res/values-v7
:<style name="LightThemeSelector" parent="android:Theme.Light"> ... </style>
in
res/values-v11
:<style name="LightThemeSelector" parent="android:Theme.Holo.Light"> <item name="selectableItemBackground">?android:attr/selectableItemBackground</item> ... </style>
Verwenden Sie dann den Stil für die Ansicht:
<TextView style="@style/LightThemeSelector" android:text="@string/hello" />
Hoffe das hilft. Prost.
quelle
<style name="LightThemeSelector" parent="android:Theme.Holo.Light"> <item name="android:background">?android:attr/selectableItemBackground</item> ... </style>