如何使用MaterialCardView实现单侧双色第二边框效果
你提到的方案完全可行,这是实现单侧边框效果的常用轻量方案,不需要额外嵌套View即可实现效果,具体操作步骤如下:
- 首先在res/drawable目录下创建自定义形状drawable文件,比如命名为
bg_card_left_red_border.xml,示例代码如下:
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 底层红色作为左侧边框 --> <item> <shape android:shape="rectangle"> <solid android:color="@color/red" /> <!-- 圆角要和MaterialCardView的圆角参数保持一致 --> <corners android:radius="8dp" /> </shape> </item> <!-- 上层主体内容区域,左侧向内偏移对应宽度露出底层红色 --> <item android:left="4dp"> <shape android:shape="rectangle"> <solid android:color="@color/white" /> <corners android:radius="8dp" /> </shape> </item> </layer-list>
- 给MaterialCardView设置上述自定义背景,注意要关闭CardView默认的背景填充,避免覆盖自定义背景,布局示例代码如下:
<com.google.android.material.card.MaterialCardView android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/bg_card_left_red_border" app:cardCornerRadius="8dp" app:cardElevation="2dp" app:cardBackgroundColor="@android:color/transparent" app:strokeWidth="1dp" app:strokeColor="@color/gray"> <!-- 卡片内部内容 --> </com.google.android.material.card>
上述代码中app:strokeWidth和app:strokeColor就是你已经实现的外层主边框参数,调整自定义drawable中android:left的数值即可修改左侧红色边框的宽度,后续如果需要换成其他单侧边框,只需要修改上层item的偏移方向(top/right/bottom)即可。
内容的提问来源于stack exchange,提问作者Android Dev
相关产品推荐
相关产品推荐

