Android L ripple触摸对形状的影响?

发布于 2022-07-28 23:15:12

有一个带有高程的圆角矩形,它会投射阴影,就像这里的示例一样:http: //developer.android.com/preview/material/views-shadows.html#shadows

这是我的形状:

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="@android:color/white" />
    <corners android:radius="6dp" />
</shape>

我想获得其他所有东西都有的漂亮的“涟漪”触摸效果,但是当它被设置为视图的背景时,不会给出触摸反馈。形状保持白色。

所以,我把它变成了layer-list

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape xmlns:android="http://schemas.android.com/apk/res/android"
            android:shape="rectangle">
            <solid android:color="@android:color/white" />
            <corners android:radius="6dp" />
        </shape>
    </item>
    <item android:drawable="?android:selectableItemBackground" />
</layer-list>

现在,当我点击它时,我得到了很好的触摸反馈,但是有一个问题。

圆角矩形的轮廓丢失了。它仍然可以很好地绘制白色圆角矩形,但阴影被投射为非圆角矩形(方形边缘),并且波纹一直越过角落:

坏角

它在这里看起来并不太可怕,但在设备上它非常丑陋和令人反感。

有没有办法来解决这个问题?第Outline一个链接的部分似乎是我想要的,但我不知道如何实现它。

关注者
0
被浏览
56
1 个回答
  • 面试哥
    面试哥 2022-07-28
    为面试而生,有面试问题,就找面试哥。

    试试那个:

    ripple.xml

    <?xml version="1.0" encoding="utf-8"?>
    <ripple android:color="@color/COLOR_WHILE_PRESSING" xmlns:android="http://schemas.android.com/apk/res/android">
     <item android:drawable="@drawable/background"></item>
    </ripple>
    

    background.xml

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android">
     <solid android:color="@color/BACKGROUND_COLOR" />
     <corners android:radius="6dp" />
    </shape>
    

    我在那里解释了如何实现新的 FAB 按钮,我也为此使用了大纲。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看