Material Flat Button 上定义的波纹在哪里
Where is ripple defined on Material Flat Button
开启 API 21+ 平面按钮在触摸时波纹。这是在 AppCompat 的什么地方定义的?
我发现在 drawable/v21/abc_btn_colored_material.xml
中定义了 Raised Buttons 上的波纹。但是唯一可绘制的平面按钮是在基础 drawables/abc_btn_borderless_material.xml
中定义的,它没有波纹(很明显)。
那么平面按钮上的波纹是在哪里设置的?
我正在查看 appcompat-v7:23:4.0
编辑:
我确实遵循了 Alexander Mironov 描述的路径,但我的 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>
让我们从 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>
开启 API 21+ 平面按钮在触摸时波纹。这是在 AppCompat 的什么地方定义的?
我发现在 drawable/v21/abc_btn_colored_material.xml
中定义了 Raised Buttons 上的波纹。但是唯一可绘制的平面按钮是在基础 drawables/abc_btn_borderless_material.xml
中定义的,它没有波纹(很明显)。
那么平面按钮上的波纹是在哪里设置的?
我正在查看 appcompat-v7:23:4.0
编辑:
我确实遵循了 Alexander Mironov 描述的路径,但我的 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>
让我们从 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>