如何移除Android Drawable Shape的底部边框?
移除Android Drawable矩形边框的底部边框实现方案
原代码里的<stroke>标签会给矩形添加完整的四边边框,没办法单独隐藏某一边。要实现仅保留上、左、右三边且带顶部圆角的边框,推荐用<layer-list>来构建,以下提供两种可行方案:
方案一:独立绘制三边边框(通用型,不依赖父布局背景)
这种方法通过分别绘制左、上、右三条边框,完全自定义显示的边,适配任意背景色:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 基础透明背景,保留顶部圆角 --> <item> <shape android:shape="rectangle"> <corners android:topLeftRadius="10dp" android:topRightRadius="10dp" /> <solid android:color="@android:color/transparent" /> </shape> </item> <!-- 左边框 --> <item android:left="1dp" android:right="-1dp" android:top="-1dp" android:bottom="-1dp"> <shape android:shape="rectangle"> <corners android:topLeftRadius="10dp" /> <solid android:color="@android:color/transparent" /> <stroke android:width="1dp" android:color="#DECF7E" /> </shape> </item> <!-- 顶部边框 --> <item android:left="-1dp" android:right="-1dp" android:top="1dp" android:bottom="-1dp"> <shape android:shape="rectangle"> <corners android:topLeftRadius="10dp" android:topRightRadius="10dp" /> <solid android:color="@android:color/transparent" /> <stroke android:width="1dp" android:color="#DECF7E" /> </shape> </item> <!-- 右边框 --> <item android:left="-1dp" android:right="1dp" android:top="-1dp" android:bottom="-1dp"> <shape android:shape="rectangle"> <corners android:topRightRadius="10dp" /> <solid android:color="@android:color/transparent" /> <stroke android:width="1dp" android:color="#DECF7E" /> </shape> </item> </layer-list>
方案二:覆盖底部边框(简洁型,需匹配父布局背景色)
如果明确父布局的背景颜色,可以先保留原全边框样式,再用一个同色矩形覆盖底部边框,达到隐藏效果:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 原带圆角的全边框样式 --> <item> <shape android:shape="rectangle"> <corners android:topLeftRadius="10dp" android:topRightRadius="10dp" /> <solid android:color="@android:color/transparent" /> <stroke android:width="1dp" android:color="#DECF7E" /> </shape> </item> <!-- 覆盖底部边框的矩形,颜色需与父布局背景色一致 --> <item android:top="-1dp" android:left="-1dp" android:right="-1dp" android:bottom="0dp"> <shape android:shape="rectangle"> <solid android:color="#FFFFFF" /> <!-- 替换为你的父布局背景色 --> </shape> </item> </layer-list>
内容的提问来源于stack exchange,提问作者GHH
相关产品推荐
相关产品推荐

