Ich habe einige anklickbare Ansichten und möchte den standardmäßig verfügbaren Hintergrund festlegen, der beim Klicken auf die Liste vorhanden ist (in ICS ist eine blaue Farbe). Ich habe versucht, dies als Hintergrund zu setzen:
Android:background="@Android:drawable/list_selector_background"
aber es ist nicht das Standard-Blau, das ich standardmäßig verwendet habe (das, das ich verwendet habe, ist Orange). Was ist das Drawable, das standardmäßig bei Android als Klickauswahl verwendet wird?
Vielen Dank
Es ist list_selector_holo_dark
oder die entsprechende Holo Light-Version. und dies sind die Standardwerte in Honeycomb und darüber. list_selector_background
ist die Nicht-Holo-Version, die in Lebkuchen und darunter verwendet wird.
EDIT: I glaube (kann jedoch nicht bestätigen), dass der plattformunabhängige Wähler ?android:attr/listSelector
Das funktioniert für mich:
Android:background="?android:attr/selectableItemBackground"
Wenn Sie appcompat-v7
verwenden, können Sie einfach ?attr/selectableItemBackground
verwenden.
Es gibt eine Möglichkeit, alle gültigen Antworten zu kombinieren:
Definieren Sie ein Attribut (z. B. in values / attrs.xml):
<attr name="clickableItemBackground" format="reference"/>
Erklären Sie in Ihrem plattformabhängigen Themenbereich (z. B. in values / styles.xml oder values / themes.xml) Folgendes:
<style name="Theme.Platform" parent="@Android:style/Theme.Whatever">
<item name="clickableItemBackground">@Android:drawable/list_selector_background</item>
</style>
In Ihrem plattformabhängigen Themenbereich für api-11 + (z. B. in values-v11/styles.xml oder values-v11/themes.xml) müssen Sie Folgendes angeben:
<style name="Theme.Platform" parent="@Android:style/Theme.Holo.Whatever">
<item name="clickableItemBackground">?android:attr/selectableItemBackground</item>
</style>
Verwenden Sie dann ?attr/clickableItemBackground
wo immer Sie möchten.
Eine Lösung ähnlich der Antwort von flx, jedoch ohne zusätzliche Attributdefinition.
Plattformunabhängiger Stil für Pre-Holo-Geräte (in res\values\styles.xml
):
<style name="SelectableItem">
<item name="Android:background">@Android:drawable/list_selector_background</item>
</style>
Stil für Holo-Geräte (API Level 14+) (in res\values-v14\styles.xml
):
<style name="SelectableItem">
<item name="Android:background">?android:attr/selectableItemBackground</item>
</style>
Anwenden des Stils auf die erforderliche Ansicht, z. B. LinearLayout
:
<LinearLayout
style="@style/SelectableItem"
Android:layout_width="match_parent"
Android:layout_height="wrap_content">
...
</LinearLayout>
Dies funktioniert gut bei API 11 und höher. Aber wie bereits erwähnt, funktioniert es bei früheren Versionen nicht.
Android:background="?android:attr/selectableItemBackground"
Hier ist eine Lösung, damit es auf allen Versionen Android läuft.
Fügen Sie die entsprechenden Farben in der colors.xml hinzu, die sich in Ihrem Wertordner befindet. Es sollte so aussehen:
<color name="white">#ffffff</color>
<color name="blue">#7ecce8</color>
Erstellen Sie eine XML-Selector-Datei. Hier habe ich es button_selection.xml genannt
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:state_pressed="true" Android:drawable="@color/blue"/> <!--pressed -->
<item Android:state_focused="true" Android:drawable="@color/blue"/> <!-- focused -->
<item Android:drawable="@color/white"/> <!-- default -->
</selector>
Gehen Sie zu Ihrer Ansicht oder Schaltfläche und legen Sie die neu erstellte button_selection.xml als Hintergrund fest.
Android:background="@drawable/button_selection"
Alternative,
Android:background="?android:attr/listChoiceBackgroundIndicator
wenn Sie möchten, dass die Elemente blau markiert werden (oder was auch immer der aktuelle Standard ist), während Sie auf sie klicken.
Wenn Sie Background
einstellen, können Sie keine Hintergrundfarbe auswählen oder später zeichnen! !__. Ich empfehle Ihnen daher, diesen Stil zu Ihrem styles.xml
hinzuzufügen:
<style name="TouchableView">
<item name="Android:foreground">?android:attr/selectableItemBackground</item>
</style>
Und bei jeder Ansicht müssen Sie nur noch hinzufügen:
Android:theme="@style/TouchableView"
LikeANYVIEW!
<TextView
Android:id="@+id/my_orders"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_marginRight="0dp"
Android:theme="@style/TouchableView"
Android:background="@color/white"
Android:gravity="left"
Android:padding="10dp"
Android:text="@string/my_orders"
Android:textColor="@color/gray"
Android:textSize="14sp" />
Vergessen Sie nicht , um onClickListener
hinzuzufügen, um die Ergebnisse anzuzeigen.