Android Can';我的图层列表不能画圆角

Android Can';我的图层列表不能画圆角,android,xml,drawable,rounded-corners,layer-list,Android,Xml,Drawable,Rounded Corners,Layer List,我制作了一个可绘制的按钮,它由渐变形状和实体形状组成,两种形状都位于如下图层列表中: <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item android:height="25dp"> <shape android:shape="rectangle"

我制作了一个可绘制的按钮,它由渐变形状和实体形状组成,两种形状都位于如下图层列表中:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:height="25dp">
        <shape android:shape="rectangle" >
            <gradient
                android:angle="90"
                android:startColor="@color/greyDark1"
                android:endColor="@color/greyDark2"/>
        </shape>
    </item>
    <item android:top="25dp" android:height="25dp">
        <shape android:shape="rectangle" >
            <solid android:color="@color/black" />
        </shape>
    </item>
</layer-list>

但是我不能把拐角弄对。 我需要整个形状周围的圆角,但不需要在内部(因此上半部分的顶部右上角和顶部左上角,下半部分的底部右下角和底部左下角)

如果我用
设置两半,则上半部分的底角和下半部分的顶角也是圆角,这不是我想要的

如果我为上半部分设置了
,为下半部分设置了
,则上半部分将是可拉伸的完整尺寸,使得渐变无法正常工作,并且下角也是相同的颜色

以下是我试图实现的目标:

有人知道这个问题的解决办法吗

编辑:

我得到了一些答案,对此我很感激,但遗憾的是,这些答案似乎不起作用

我从bofredo和Bhunnesh Chasta那里得到的答案是这样的:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:height="25dp">
        <shape android:shape="rectangle" >
            <gradient
                android:angle="90"
                android:startColor="@color/greyDark1"
                android:endColor="@color/greyDark2"/>
        </shape>
    </item>
    <item android:top="25dp" android:height="25dp">
        <shape android:shape="rectangle" >
            <solid android:color="@color/black" />
        </shape>
    </item>
</layer-list>

我从“好奇之心”那里得到的答案看起来不错,但不是我的目标:

最终编辑:

我和我的同事讨论过这个问题,我们都同意让它看起来像这样并不重要,所以我们选择了纯色


我仍然要感谢每一位帮助过我的人,所有当前的答案都将获得投票,我将接受瓦卡斯兰的答案,因为他非常接近我想要的答案。

试试这个。您应该使用形状中的“到角”来实现圆角

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item >
    <shape
        android:shape="rectangle">
        <solid android:color="#b2d1d1ef" />
        <corners android:radius="1dp"/>
    </shape>
</item>
<item android:right="1dp" android:left="1dp" android:bottom="2dp" android:top="1dp">
    <shape
        android:shape="rectangle">
        <solid android:color="#FFFFFF"/>
        <corners android:radius="5dp"/>
    </shape>
</item>


我很久以前也有这个问题。你可以找到那个问题

这是工作答案:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
   <item>
     <shape xmlns:android="http://schemas.android.com/apk/res/android" >   
     <solid android:color="@color/cocus_orange"/>
     <corners android:radius="15px"/>
     <padding android:left="1dp" android:top="1dp" android:right="1dp" android:bottom="1dp" /> 
</shape>
</item>
<item>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <gradient android:angle="90" 
        android:startColor="#880f0f10" 
        android:centerColor="#880d0d0f" 
        android:endColor="#885d5d5e"/>
        <corners
            android:radius="15px" />
 </shape> 
</item>
</layer-list>

像这样试试

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

<gradient
    android:angle="270"
    android:endColor="#000"
    android:startColor="#787575" />

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

我认为这是使用xml最接近您想要的可绘制图形的地方



也许你应该使用它来获得确切的效果。

今天发现这个问题并解决了,我将分享它,以防其他人发现它没有按照OP的要求解决,并且想知道正确的方法,因为我确信OP不再需要它。 我为每个项目绘制了起点/终点,顶部的渐变从按钮开始的地方开始,在20dp后结束,底部的渐变从20dp后开始,在按钮的末端结束。你甚至可以从附件中看到,这与OP想要的结果是一样的!:) (我没有10个声誉来发布图片。)



您能按需要显示图像吗@丹尼斯·特瑞this@curiousMind我在编辑中添加了一张图片,我真的希望我能用android xmlsee my answer bro设置这些角落…这似乎不太管用(看起来像个汉堡),结果是在我的上一次编辑中这似乎不管用(看起来像个汉堡),结果是在我的上一次编辑中,这是相当棘手的。也许有一些定制的解决方案。这似乎不太管用(虽然看起来很漂亮),结果是在我的最后一个edit@DennisvanOpstal如果你想从layerlist开始,那么据我所知,这是不可能的,因为两者都是不同的列表,你不能将其包装在一个列表中,并给出半径…这可能是真的,但是我也不知道如果没有图层列表它会如何工作,因为如果我使用你的代码,实体部分甚至不会显示哪个实体??我改变了半径。。再次检查半径是否正确,我看到了,但我的意思是你的形状包含一个实体和一个渐变,但只显示渐变
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:bottom="20dp">
        <shape
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:shape="rectangle">
            <gradient
                android:angle="270"
                android:startColor="#4e4e4e"
                android:endColor="#626262"
                android:type="linear"/>
        </shape>
    </item>
    <item android:top="20dp">
        <shape
            android:shape="rectangle" >
            <gradient
                android:angle="270"
                android:startColor="#4c4c4c"
                android:endColor="#1c1c1c"
                android:type="linear"/>
            <corners android:bottomLeftRadius="8dp" android:bottomRightRadius="8dp"/>
        </shape>
    </item>
</layer-list>