选项 1:可绘制形状
如果您希望在可以设置背景的布局或视图周围设置边框,这是最简单的选项。在drawable 文件夹中创建一个如下所示的 XML 文件:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<solid android:color="#8fff93" />
<stroke
android:width="1px"
android:color="#000" />
</shape>
如果您不想填充,可以删除 solid。在您的布局/视图上设置background="@drawable/your_shape_drawable"。
选项 2:背景视图
这是我在RelativeLayout 中使用的一个小技巧。基本上,在要给边框的视图下方有一个黑色方块,然后给该视图一些填充(不是边距!),以便黑色方块在边缘显示出来。
显然,这只有在视图没有任何透明区域时才能正常工作。如果是这样,我建议您编写一个自定义的 BorderView,它只绘制边框 - 它应该只有几十行代码。
<View
android:id="@+id/border"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/image"
android:layout_alignLeft="@+id/image"
android:layout_alignRight="@+id/image"
android:layout_alignTop="@+id/main_image"
android:background="#000" />
<ImageView
android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_...
android:padding="1px"
android:src="@drawable/..." />
如果您想知道,它确实适用于adjustViewBounds=true。但是,如果您想在整个RelativeLayout 中拥有背景,则它不起作用,因为有一个错误会阻止您用View 填充RelativeLayout。在这种情况下,我会推荐 Shape drawable。
选项 3:9 补丁
最后一种选择是使用像这样的 9-patch 可绘制对象:
您可以在可以设置android:background="@drawable/..." 的任何视图上使用它。是的,它确实需要是 6x6 - 我尝试了 5x5,但它不起作用。
这种方法的缺点是你不能很容易地改变颜色,但如果你想要花哨的边框(例如,只有顶部和底部的边框,就像这个问题一样)那么你可能无法做到Shape drawable,不是很强大。
选项 4:额外观看次数
如果您只想要视图上方和下方的边框,我忘了提及这个非常简单的选项。你可以把你的视图放在一个垂直的LinearLayout(如果还没有的话),然后像这样在它的上方和下方添加空的Views:
<View android:background="#000" android:layout_width="match_parent" android:layout_height="1px"/>