Android水波纹效果不显示高度

3
我的目标是在点击列表项时出现涟漪效果和阴影。我知道,为了实现阴影,当前需要为视图的背景设置非透明颜色。
这是我用于列表项的背景:
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="@color/ripple_color">

    <item>
        <shape android:shape="rectangle">

            <solid android:color="@android:color/white"/>

            <stroke android:color="@color/border_color"
                android:width="0.25dp"/>

        </shape>
    </item>

</ripple>

如您所见,我将实心值设置为白色,当视图绘制时,它具有白色背景。为了确保使用了这个值,我将其更改为红色,视图变为红色背景,所以并不像 solid 元素被忽略一样。
我还测试了将此背景切换为纯白色,结果显示正确的高程阴影,因此我知道问题不在其他方面。
我需要添加什么内容才能使我的高程出现?

你在使用Lollipop运行吗? - rekire
是的,它在一个实际设备上运行(而不是模拟器)并且是基于Lollipop系统。 - JMRboosties
2个回答

3

你的描边颜色(@color/border_color)是半透明的吗?我刚刚发现,当我将描边改为没有透明度的颜色时,失踪的高程阴影又回来了。

对于具有透明度的形状,高程不会显示,甚至如果你的实心部分不是半透明的,但如果你的描边是半透明的,它也不会起作用。我不知道一个形状的高程是否总是会失败,如果其中有任何透明元素,但这可能是情况。


不,边框颜色是实心的。 - JMRboosties

-1
如果您不介意将CardView作为RecyclerView行的父视图组,则可以使用card_view:cardElevation属性来设置高程。但是,这需要xmlns模式:
xmlns:card_view="http://schemas.android.com/apk/res-auto"

你必须将其包含在内才能使用该属性。:)


抱歉,这实际上并没有解决问题。问题在于当Android认为相关视图的背景是透明时,海拔高度不会显示。由于背景将是相同的(仅为卡片视图而不是RelativeLayout),因此海拔阴影仍然不可见。 - JMRboosties

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接