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.
InformationsquelleAutor Micha Brix | 2015-01-13
Schreibe einen Kommentar