Android带有半圆边缘的按钮

7

我正在尝试创建一个形状,用于在我的Android项目中作为imagebutton的形状,这个形状基本上具有左右两侧的半圆形。

我认为我可以使用带有半径的形状XML,但那只会将角落圆润,而我需要整个左右两侧都是像下面图片中一样的半圆形。

我目前的形状XML如下:

<?xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" 
    android:color="@color/white">

    <corners
       android:radius="60dip"
         />

    <stroke
        android:width="0dp"
        android:color="#000000" />


     <solid
        android:color="@color/white" />

</shape>

但我正在尝试实现这个效果: 在此输入图片描述
2个回答

3
您必须像这样指定每个角的半径:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="@color/green" />
    <size android:height="30dp" />
    <corners
        android:bottomRightRadius="15dp"
        android:bottomLeftRadius="15dp"
        android:topRightRadius="15dp"
        android:topLeftRadius="15dp"
        />
</shape>

您不应该指定宽度,以便其可以根据背景可绘制物调整宽度。

1
你的按钮有多高?带有圆角的形状可绘制对象应该可以使用,半径应该是按钮高度的一半。

正如您所看到的,我在实际形状XML中没有设置高度.. 我应该吗?因为我在布局中将按钮的高度设置为40DP,无论我将半径设置为多少,它似乎都不会改变.. 有没有一种方法可以动态地设置半径? - erik
1
你是在真机上测试还是模拟器上测试?如果你的布局中的按钮是40dp,那么你想要的圆角半径就应该是20dp。在真机和/或模拟器上尝试一下,并发布你所得到的截图以及布局xml文件。 - Matt
嗯,看起来你是正确的,我必须将代码发布到设备上才能看到预期/期望的结果...哇,那真是浪费时间,谢谢。 - erik
没问题 -- 永远不要相信布局编辑器,它是一个很好的“预览”,但不一定是设备上像素完全相同的表示。 - Matt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接