如何移除MaterialCardView细微边框并设置为透明?
解决MaterialCardView细微边框及透明背景问题
我明白你遇到的这个小麻烦——明明设置了elevation为0,MaterialCardView还是有细微边框,想把它完全透明化对吧?咱们一步步来搞定它:
问题根源分析
你的布局里加了android:shape="ring"、android:innerRadius="0dp"这些属性,这其实是给传统ShapeDrawable用的,但MaterialCardView本身有自己的圆角和形状控制逻辑,这些额外的shape属性反而可能导致意外的边框出现;另外默认情况下MaterialCardView可能有极细的默认stroke或者非透明的背景底色。
具体解决方案
你需要做这两个关键调整:
- 移除那些多余的shape相关属性,用MaterialCardView自带的
app:cardCornerRadius来控制圆角就足够了 - 明确设置透明背景和0宽度的边框
修改后的完整布局代码如下:
<android.support.design.card.MaterialCardView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" app:cardCornerRadius="24dp" card_view:cardElevation="0dp" card_view:cardMaxElevation="0dp" card_view:cardBackgroundColor="@android:color/transparent" card_view:strokeWidth="0dp"> <ImageView android:id="@+id/close_button" android:layout_width="48dp" android:layout_height="48dp" android:layout_gravity="top|end" android:padding="@dimen/account_menu_close_button_padding" android:alpha="0" app:srcCompat="@drawable/quantum_gm_ic_close_vd_theme_24" /> </android.support.design.card.MaterialCardView>
额外说明
card_view:cardBackgroundColor="@android:color/transparent"确保卡片背景完全透明,不会透出默认的底色card_view:strokeWidth="0dp"强制把卡片的边框宽度设为0,彻底移除细微边框- 去掉
android:shape="ring"等属性后,MaterialCardView会用自身的圆角逻辑渲染,避免了shape属性冲突带来的异常
这样调整后,你的MaterialCardView就应该完全透明且没有边框啦!
内容的提问来源于stack exchange,提问作者Elad Benda




