Lollipop: Deaktiviert-Taste --> welcher Stil?
Habe ich versucht, auf die Spur, wie Lollipop zeigt eine Schaltfläche, die ist deaktiviert mit android:enabled="false"
in der layout-Datei.
Holo
Mit Holo, es ist ganz einfach: In der styles_holo.xml ich find den style Widget.Holo.Taste, die gibt mir einen Verweis zu @drawable/btn_default_holo_dark. Dort finde ich die Auswahl:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_window_focused="false" android:state_enabled="true"
android:drawable="@drawable/btn_default_normal_holo_dark" />
<item android:state_window_focused="false" android:state_enabled="false"
android:drawable="@drawable/btn_default_disabled_holo_dark" />
<item android:state_pressed="true"
android:drawable="@drawable/btn_default_pressed_holo_dark" />
<item android:state_focused="true" android:state_enabled="true"
android:drawable="@drawable/btn_default_focused_holo_dark" />
<item android:state_enabled="true"
android:drawable="@drawable/btn_default_normal_holo_dark" />
<item android:state_focused="true"
android:drawable="@drawable/btn_default_disabled_focused_holo_dark" />
<item
android:drawable="@drawable/btn_default_disabled_holo_dark" />
</selector>
Lollipop
Wenn ich versuche die gleiche Logik auf Lollipop, ich steckengeblieben:
In styles_material.xml ich finde den Stil <style name="Widget.Material.Button">
wo finde ich den Verweis auf <item name="background">@drawable/btn_default_material</item>
. Aber es ist kein Selektor??!! Stattdessen finde ich:
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="?attr/colorControlHighlight">
<item android:drawable="@drawable/btn_default_mtrl_shape" />
</ripple>
Könnte mir bitte jemand erklären, welche spezifischen Stil Lollipop verwendet, für eine deaktivierte Schaltfläche.
Vielen Dank!
Bearbeiten
Kann ich teilweise die Antwort selbst: In @drawable/btn_default_mtrl_shape
finde ich einen Verweis auf <solid android:color="?attr/colorButtonNormal" />
, die wiederum auf @color/btn_default_material_light
umfasst einen Selektor:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="false"
android:alpha="@dimen/disabled_alpha_material_light"
android:color="@color/button_material_light"/>
<item android:color="@color/button_material_light"/>
</selector>
Aber, dass der alpha-Wert nur erklärt, die Hälfte der. Irgendwie Lollipop auch die Höhe auf 0?
- Höhe ist nicht Teil des Hintergrunds drawable; es ist gesteuert durch den stateListAnimator. Nehmen Sie einen anderen Blick auf das Material button-style.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist, wie ich dieses Problem gelöst, Dank Ihrer teilweise beantworten.
Ersten: neuen Ordner hinzufügen "Farbe" unter "res" - Ordner, wenn es nicht vorhanden ist.
Neu hinzufügen .xml-Datei in "color" - Ordner (ich nenne diese Datei ButtonColorSelector.xml), wo wir schaffen neue ColorStateList wie diese:
Zweite: Fügen Sie, dass ripple-Effekt .xml-Datei, die Sie erwähnt, unter "drawable" - Ordner und stellen Sie Ihre colorSelector statt btn_default_mtrl_shape. Ich nenne diese Datei RaisedButton.xml.
Dritte: Jetzt können Sie Ihren drawable für den button-hintergrund in Ihren layouts, wie diese: