我创建了一个按钮,我想给这个按钮添加涟漪效果!

我创建了一个按钮BGXML文件:(bg_btn.xml)

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<gradient android:startColor="#FFFFFF" android:endColor="#00FF00" android:angle="270" />
<corners android:radius="3dp" />
<stroke android:width="5px" android:color="#000000" />
</shape>

这是我的涟漪效应文件:(ripple_bg.xml)

<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:color="#f816a463"
    tools:targetApi="lollipop">
    <item android:id="@android:id/mask">
        <shape android:shape="rectangle">
            <solid android:color="#f816a463" />
        </shape>
    </item>
</ripple>

这是我要添加涟漪效果的按钮:

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/button"
android:layout_centerHorizontal="true"
android:layout_marginTop="173dp"
android:textColor="#fff"
android:background="@drawable/ripple_bg"
android:clickable="true" />

但在添加涟漪效果后,按钮的背景是透明的,并且按钮只在点击时显示,

点击前

点击

但我需要按钮背景色和涟漪效果,

推荐答案

下面是另一个可绘制的xml,适用于那些希望将渐变背景、角半径和涟漪效果添加到一起的人:

<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="@color/colorPrimaryDark">
    <item android:id="@android:id/mask">
        <shape android:shape="rectangle">
            <solid android:color="@color/colorPrimaryDark" />
            <corners android:radius="@dimen/button_radius_large" />
        </shape>
    </item>

    <item android:id="@android:id/background">
        <shape android:shape="rectangle">
            <gradient
                android:angle="90"
                android:endColor="@color/colorPrimaryLight"
                android:startColor="@color/colorPrimary"
                android:type="linear" />
            <corners android:radius="@dimen/button_radius_large" />
        </shape>
    </item>
</ripple>

将其添加到按钮的背景中.

<Button
    ...
    android:background="@drawable/button_background" />

PS:这个答案适用于android api 21及以上版本.

Android相关问答推荐

将HTML约束布局转换为Jetpack编写约束布局-链样式、偏差

如何将文本相对于喷气背包中的图标垂直居中?

如何使禁用状态下的material 3按钮与启用状态下的 colored颜色 相同?

如何让用户与我的应用生成的多个音频文件交互

在Jetpack Compose中的隐藏状态栏后面绘制

为什么它显示我的空白屏幕?

使用Jetpack Compose创建特定于电视的布局

为什么可以';我不能直接在RecyclerView.ViewHolder中访问视图ID吗?

看不到选项菜单栏

减少Compose中可滚动选项卡之间的间距

为一组闪烁的可组合项制作动画,控制同步/定时

浏览器未命中断点判断 USB 连接设备

CoroutineScope 与挂起函数

如何在 Jetpack Compose 中向图像视图添加对角色带?

Jetpack Compose UI - 在 AlertDialog 中单击时按钮宽度会发生变化

我该怎么做文本计时器

如何在 Jetpack Compose 中添加多个标签

Android Compose:LazyColumn 和 Column with verticalScroll 的区别

如何在 Jetpack Compose 中填充矢量图像的背景?

EAS 构建失败,错误代码为 1,但 Expo Build 成功,我需要 EAS 构建来删除未使用的包,如 com.segment.analytics.android:analytics