You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Dialog可点击项点击出现未知黄色波纹效果问题排查

问题原因

你用的android.R.style.Theme_Black_NoTitleBar是旧版主题,不兼容Material Design的无边框圆形波纹效果,系统会 fallback 到默认的方形黄色波纹样式,所以即使设置了?attr/selectableItemBackgroundBorderless也没生效。

解决方案

方法1:自定义Dialog主题

在res/values/styles.xml里添加自定义主题,继承Material风格的Dialog主题,同时指定波纹颜色:

<style name="CustomDialogTheme" parent="Theme.MaterialComponents.Dialog">
    <!-- 设置Dialog背景透明 -->
    <item name="android:windowBackground">@android:color/transparent</item>
    <!-- 设置波纹颜色,替换成你需要的,比如半透明灰色 -->
    <item name="colorControlHighlight">@color/ripple_color</item>
    <!-- 隐藏标题 -->
    <item name="android:windowNoTitle">true</item>
</style>

然后修改Dialog创建代码,使用这个自定义主题:

Dialog dialog = new Dialog(requireContext(), R.style.CustomDialogTheme);
dialog.setCancelable(true);
dialog.setContentView(R.layout.custom_dialog);
dialog.show();

方法2:直接使用自定义波纹Drawable

创建一个圆形波纹的drawable文件res/drawable/ripple_round.xml:

<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="@color/ripple_color"> <!-- 这里设置波纹颜色 -->
    <item android:id="@android:id/mask">
        <shape android:shape="oval">
            <solid android:color="@android:color/white" /> <!-- mask仅用于确定波纹范围,颜色不显示 -->
            <size android:width="28dp" android:height="28dp" />
        </shape>
    </item>
</ripple>

然后修改ImageView的background属性:

android:background="@drawable/ripple_round"

内容的提问来源于stack exchange,提问作者coderror

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 16:31:02