如何禁用Android Lollipop ripple的alpha值?

Grz*_*icz 15 android colors design-guidelines ripple material-design

我有一个使用自定义颜色的波纹.但是,颜色永远不会完全不透明.根据什么应该是Ripple的颜色,colorPrimary或​​colorAccent的答案?(材料设计)它总是具有40%的alpha值.看看答案我试图使用以下v21特定的drawable xml强制选择不透明的红色背景:

<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
        android:color="#ffff0000">
    <item android:id="@android:id/mask">
        <color android:color="#ffffffff" />
    </item>
</ripple>
Run Code Online (Sandbox Code Playgroud)

但是,我总是得到一个阿尔法红色,而不是我想要的不透明红色.是否有可能产生不透明的波纹?这是波纹的屏幕截图,其中红色永远不会完全不透明.

在此输入图像描述

你可以在https://github.com/gradha/Stackoverflow33217896上找到一个简单的涟漪效应示例,使用XML涟漪和另一个由代码生成的涟漪效应.后者表明,如果不重写代码,就不可能实现不透明的纹波.

Lal*_*dav 1

您可以简单地为有界波纹输入 alpha 值。

<ripple xmlns:android="http://schemas.android.com/apk/res/android"
        android:color="?android:attr/colorAccent">
    <item android:id="@android:id/mask">
        <color android:color="#42ffffff" />
    </item>
</ripple>
Run Code Online (Sandbox Code Playgroud)

对于无限的波纹如果你知道你的强调色,你可以设置颜色的不透明度

<ripple xmlns:android="http://schemas.android.com/apk/res/android"
        android:color="@color/accent_26" />
Run Code Online (Sandbox Code Playgroud)

颜色.xml

<resources>
    ...
    <color name="accent">#ff33b5e5</color>
    <color name="accent_alpha26">#4233b5e5</color>
</resources>
Run Code Online (Sandbox Code Playgroud)