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
相关产品推荐
相关产品推荐

