2016-07-22 9 views
1

Auf API 21 + Flat Buttons Welligkeit bei Berührung. Wo in AppCompat ist das definiert?Wo Ripple definiert ist auf Material Flat Button

Ich kann feststellen, dass die Ripple auf Raised Buttons in drawable/v21/abc_btn_colored_material.xml definiert ist. Aber der einzige flache Knopf, der gezogen werden kann, wird in der Basis drawables/abc_btn_borderless_material.xml definiert, die (offensichtlich) keine Welligkeit hat.

Wo wird die Welligkeit auf flache Tasten gesetzt?

Ich suche in appcompat-v7: 23: 4.0

EDIT:

ich den Weg von Alexander Mironov beschrieben tat folgen, aber meine btn_borderless_material wie folgt aussieht:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_focused="true" android:drawable="@drawable/abc_btn_default_mtrl_shape"/> 
    <item android:state_pressed="true" android:drawable="@drawable/abc_btn_default_mtrl_shape"/> 
    <item android:drawable="@android:color/transparent"/> 
</selector> 
+0

Sind Sie sicher, dass Sie das gleiche SDK wie ich verwenden? Wie Sie appcompat-v7: 23 erwähnt haben, nahm ich an, dass Sie API 23 verwenden. Der endgültige Pfad ist 'PATH_TO_ANDROID_SDK \ platforms \ android-23 \ data \ res \ drawable \ btn_borderless_material.xml' auf Ihrem System, Sie können überprüfen, ob es zu Ihrem passt . –

Antwort

2

Fangen wir unsere Reise mit AppCompat values.xml:

<style name="Widget.AppCompat.Button.Borderless" parent="Base.Widget.AppCompat.Button.Borderless"/> 

Wenn wir zum Elternteil gehen, haben wir Spezialisierung mit v21 Qualifier values-v21.xml. Hier sehen wir:

<style name="Base.Widget.AppCompat.Button.Borderless" parent="android:Widget.Material.Button.Borderless"/> 

Ok, das ist gemein, dass, wenn API 21 oder höher wir Android-internes Thema verwenden. Gehen wir zu styles_material.xml:

<!-- Borderless ink button --> 
    <style name="Widget.Material.Button.Borderless"> 
     <item name="background">@drawable/btn_borderless_material</item> 
     <item name="stateListAnimator">@null</item> 
    </style> 

Dann btn_borderless_material gehen. Und schließlich haben wir unsere Ripple:

<ripple xmlns:android="http://schemas.android.com/apk/res/android" 
     android:color="?attr/colorControlHighlight"> 
    <item android:id="@id/mask" 
      android:drawable="@drawable/btn_default_mtrl_shape" /> 
</ripple> 
+0

Ich folgte diesem Pfad, endete aber mit einem anderen 'btn_borderless_material'. Ich habe meine ursprüngliche Frage aktualisiert. – tir38

Verwandte Themen