Android中利用shape实现圆角

按道理来讲,实现圆角很简单,在shape中设置corners即可。但是有时候会出现即使设置了也不会出现圆角的效果。

属性解释

  • corners:设置圆角,只适用于rectangle类型,可分别设置四个角不同半径的圆角。

    android:radius 圆角半径,会被下面每个特定的圆角属性重写

    android:topLeftRadius 左上角的半径

    android:topRightRadius 右上角的半径

    android:bottomLeftRadius 左下角的半径

    android:bottomRightRadius 右下角的半径

问题与解决

比如我想设置左边两个角为圆角,正常思路是:

1
2
3
4
5
6
<corners
android:topLeftRadius="8dp"
android:topRightRadius="8dp"
android:bottomRightRadius="0dp"
android:bottomLeftRadius="0dp"
/>

但实际情况是,这样并不会出现圆角的效果。

正确的做法是:

1
2
3
4
5
6
7
<corners
android:radius="2dp" //这里要首先设置
android:topLeftRadius="8dp"
android:topRightRadius="8dp"
android:bottomRightRadius="0dp"
android:bottomLeftRadius="0dp"
/>

此时,在Android studio 中看预览效果还是4个圆角, 但实际运行是满足的。

  • 注意以下几点

1、在设置圆角时,圆角半径的大小必须大于1,否则是没有圆角效果的。

2、如果你想单独设置某几个角是圆角, 你必须首先声明 radius 属性(必须大于1),

然后在其他四个角的属性中设置每个角的实际想要的半径大小, 不想圆角的设置为(“0dp”).