如何制作带有圆角的布局..?
对于API 21以上版本,请使用剪裁视图
在API 21中,View
类中新增了圆形轮廓剪裁功能。有关详细信息,请参见此培训文档或此参考文档。
该内置功能使得实现圆角非常容易。它适用于任何视图或布局,并支持适当的剪裁。
下面是具体步骤:
- 创建一个圆形形状drawable,并将其设置为视图的背景:
android:background="@drawable/round_outline"
- 在代码中剪裁为轮廓:
setClipToOutline(true)
文档曾经说过,您可以在XML中设置android:clipToOutline="true"
,但是这个bug现在终于解决了,文档现在正确地指出,您只能在代码中这样做。
它是什么样子的:
关于ImageView的特别说明
setClipToOutline()
仅在视图的背景设置为形状drawable时才起作用。如果存在此背景形状,则视图将把背景的轮廓视为剪裁和投影的边界。
这意味着,如果您希望通过setClipToOutline()
来使ImageView的角变成圆形,则您的图像必须来自于android:src
而不是android:background
(因为背景用于圆形形状)。如果您必须使用背景来设置图片而不是src,则可以使用这个嵌套视图的解决方案:
- 创建一个带有形状可绘制背景的外层布局
- 将该布局包裹在没有填充的 ImageView 周围
- ImageView(包括布局中的任何其他内容)现在将被裁剪为外部布局的圆形形状。