小编典典

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

android

有一个带有高程的圆角矩形,它会投射阴影,就像这里的示例一样: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一个链接的部分似乎是我想要的,但我不知道如何实现它。


阅读 212

收藏
2022-06-02

共1个答案

小编典典

试试那个:

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 按钮,我也为此使用了大纲。

2022-06-02