2016-07-22 55 views
1

API 21+平面按鈕在觸摸時產生波紋。這是在AppCompat中定義的?材料平面按鈕上定義的紋波位於何處

我可以發現在凸起按鈕上的波紋在drawable/v21/abc_btn_colored_material.xml中定義。但唯一的平面按鈕繪製在底部drawables/abc_btn_borderless_material.xml定義,它沒有波紋(顯然)。

那麼在平面按鈕上設置紋波的位置在哪裏?

我期待在程序兼容性-V7:23:4.0

編輯:

我也跟着亞歷山大米羅諾夫描述的路徑,但我btn_borderless_material樣子:

<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

您確定您使用相同的SDK作爲我?正如你所提到的appcompat-v7:23我假定你使用API​​ 23.最後的路徑是我的系統上的'PATH_TO_ANDROID_SDK \ platforms \ android-23 \ data \ res \ drawable \ btn_borderless_material.xml',你可以檢查它是否與你的。 –

回答

2

讓我們開始我們與AppCompat的旅程values.xml

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

當我們去父母,我們有v21限定符values-v21.xml專業化。這裏我們看到:

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

好吧,這意味着當API是21或更高時,我們使用Android的內置主題。讓我們去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> 

然後去btn_borderless_material。最後,我們有我們的漣漪:

<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

我確實遵循了該路徑,但是以不同的'btn_borderless_material'結尾。我更新了我原來的問題。 – tir38