API 17中设置CardView半径为0触发IllegalArgumentException异常问题
解决API 17下CardView设置radius为0抛出异常的问题
我之前维护旧Android项目时刚好踩过这个坑!在API 17(Android 4.2)环境下,直接给CardView设置radius = 0F会触发java.lang.IllegalArgumentException,错误提示就是radius must be > 0,和你遇到的情况完全一致。
问题原因
早期版本的CardView(对应API17的support库实现)圆角绘制逻辑有严格限制,它要求radius必须是大于0的数值,不接受0值作为参数。
可行的解决方法
- 临时妥协方案:用极小值代替0
视觉上,设置一个接近0的极小值(比如0.1F)完全看不出圆角效果,同时能避开这个异常:mediaPlayerCardView.radius = 0.1F - 彻底移除圆角需求
如果你的场景完全不需要圆角,可以直接不在布局XML里设置app:cardCornerRadius属性,同时代码里也不要调用radius相关设置——早期版本的CardView默认就是无圆角状态,但直接设置0会报错,不设置反而正常。 - 升级CardView依赖版本
如果项目允许升级依赖,把CardView更新到较新的AndroidX版本(比如androidx.cardview:cardview:1.0.0及以上),这个限制在后续版本中已经被修复,支持直接设置radius为0。
额外提醒
如果是在布局XML里写app:cardCornerRadius="0dp",在API17环境下同样会触发这个异常,所以代码里设置极小值是更稳妥的临时解决方式。
内容的提问来源于stack exchange,提问作者mrzbn
相关产品推荐
相关产品推荐

