如何只从元件的一侧删除边框?(How to remove border only from one

2019-07-29 09:38发布

我有:

<stroke android:width="1px" android:color="#A6ACB1"/>

我想从元件的底部(例如)删除此边界。 可能吗? (Eclipse的建议我只:颜色,宽度,dashWidth和dashGap)。

Answer 1:

据我所知,没有这样做的一个简单的方法。 但如果你使用层列表与具有边框上,然后一个与所有您想要等于边框宽度边框两侧偏移没有一个项目,你会做到这一点。

请允许我向XML为你代表的无边框底部..

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <!-- Border -->
    <item>
        <shape>
            <solid android:color="#f000"></solid>
        </shape>
    </item>
    <!-- Body -->
    <item android:left="2dip"
          android:top="2dp"
          android:right="2dp">
        <shape>
            <solid android:color="#ffafafaf"></solid>
        </shape> 
    </item>
</layer-list>

正如你所看到的,我说的是第二项,由两个DP的上除底部各方(因此在底部无边界结果)被插页第一位的,你去那里:

所以基本上这是不是每本身的边界,它的形状由以下(但如果你需要虚线或点,或任何你可以添加一个边框)覆盖由第二项与将按钮的身体。 所有在同一绘制:)

这可以应用到你想通过更改产品插图的值,例如删除,如果我改变任何边界right在车身项bottom ,丢失的边界会,因为它是正确的是没有一个插页



Answer 2:

这是一个黑客位,但其可能使用到删除一个或多个边界inset绘制负值。 包裹的形状以inset和施加负android:insetTopandroid:insetBottomandroid:insetLeft ,或android:insetRight与ABS值等于笔划宽度。

例如,为了从一个矩形与卸下底部边界4dp中风,使用android:insetBottom的值-4dp

<?xml version="1.0" encoding="utf-8"?>
<inset xmlns:android="http://schemas.android.com/apk/res/android"
    android:insetBottom="-4dp">

    <shape android:shape="rectangle">
        <solid android:color="#FFFFFF" />
        <stroke android:width="4dp" android:color="#000000" />
        <corners android:radius="4dp" />
    </shape>

</inset>

这似乎只要和形状的弯道的半径小于等于笔划宽度工作。 否则,使用这两个值,以完全隐藏相邻边界的圆形部分施加的插图时(半径)的大。



Answer 3:

这是一个XML的把戏。 首先,你需要填写具有特定颜色(线条颜色)层。 然后,你必须用另一种颜色(背景色)来填充它,而从你想画就行了侧推拉一点点。 这里是我的代码:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

        <!-- First we have to create the line color (Black: #000000 and
           Set position to 0 from all sides, this will allow us
           even to to determine border size in any side (top,
           right, bottom, left) -->

    <item android:top="0dp"
        android:right="0dp"
        android:left="0dp"
        android:bottom="0dp">
        <shape android:shape="rectangle">
            <solid android:color="#000000"></solid>
        </shape>
    </item>

    <!-- Here we fill the content with our color, and I will
         push 1dp from the top so this size (top = 1dp) will
         keep the previous color and it will look like the border
         -->

    <item android:top="1dp"
        android:right="0dp"
        android:left="0dp"
        android:bottom="0dp">
        <shape android:shape="rectangle">
            <solid android:color="#f4f4f4"></solid>
        </shape>
    </item>
</layer-list>

https://i.stack.imgur.com/ifak8.jpg

这里是如何看起来:



文章来源: How to remove border only from one side of the element?