在Android的可绘制XML中,如何在一个视图上创建三面边框?

16

我想为我的Android按钮创建一个可绘制对象,定义为drawable。我发现我可以使用矩形设置所有边框,但当我想在三个边上设置时有点卡住了。例如,我想要顶部或底部其中之一开放。

有人能告诉我如何做吗?

3个回答

30

尝试这样做,虽然我在其他帖子上看到过

<?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="#FFFFFF" />
    <padding
        //android:bottom="10dp"  Remove this to avoid seeing the bottom border 
        android:left="10dp"
        android:right="10dp"
        //android:top="10dp"  Remove this to avoid seeing the top border
    />

    <corners android:radius="5dp" />
</shape>
</item>
<item>
<shape android:shape="rectangle" >
    <padding
        android:bottom="5dp"
        android:left="5dp"
        android:right="5dp"
        android:top="5dp" />

    <solid android:color="#666666" />
</shape>
</item>
</layer-list>

https://dev59.com/-3A75IYBdhLWcg3wf5JV#10133434


2
这个“可行”,但它不是最好的解决方案,因为它会产生过度绘制。 - Navarr

6
如果有人遇到有关填充不起作用的问题,请尝试查看:https://dev59.com/a2kv5IYBdhLWcg3wwjkI#11006931。该解决方案使用在 标签上的位置属性来达到相同的效果。
我在为操作栏创建可绘制对象时使用被接受的答案时遇到了问题,而链接的方法对我起到了作用。

6

这可能会对您有所帮助。

我在XML的三个边框上。

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

            <corners android:radius="0dp" />
            <stroke android:width="3dp" android:color="#000000" />
        </shape>
    </item>
</layer-list>

1
完美,它能够正确地工作,解决了我的问题。 - Ghayas

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