18

我有一个使用自定义颜色的波纹。但是,颜色永远不会完全不透明。根据什么应该是波纹的颜色,colorPrimary 或 colorAccent 的答案?(材料设计)它始终具有 40% 的 alpha。查看答案,我尝试使用以下 v21 特定的可绘制 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>

但是,我总是得到 alpha 红色,而不是我想要的不透明红色。有可能得到不透明的波纹吗?这是波纹的屏幕截图,其中红色永远不会完全不透明。

在此处输入图像描述

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

4

1 回答 1

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>

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

<ripple xmlns:android="http://schemas.android.com/apk/res/android"
        android:color="@color/accent_26" />

颜色.xml

<resources>
    ...
    <color name="accent">#ff33b5e5</color>
    <color name="accent_alpha26">#4233b5e5</color>
</resources>
于 2018-07-25T13:22:58.793 回答