我有:
<stroke android:width="1px" android:color="#A6ACB1"/>
我想从元素的底部(例如)移除此边框。可能吗? (Eclipse仅建议我:color,width,dashWidth和dashGap)。
答案 0 :(得分:24)
据我所知,没有一种简单的方法可以做到这一点。但是如果你将图层列表与一个具有边框的项目一起使用,然后使用一个没有偏移的边框>你希望边框等于边框宽度的一个边框,你就会实现这一点。
让我为你制作代表无边框底部的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(因此底部没有边框结果),你去了:
所以基本上这不是边框本身,它是从下面的形状(虽然你可以添加一个边框,如果你需要虚线或点缀或其他)被第二个项目覆盖,它将是按钮的主体。所有在同一个drawable:)
这可以应用于您要删除的任何边框,方法是更改项目插入的值,例如,如果我将Body项目中的right
更改为bottom
,则丢失border是正确的,因为它是没有插入的那个
答案 1 :(得分:15)
这有点像黑客,但可以使用带有负值的inset
drawable删除一个或多个边框。将形状包裹在inset
中,并应用负值android:insetTop
,android:insetBottom
,android: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>
只要形状的角半径小于行程宽度,这似乎就能很好地工作。否则,在应用插图时使用两个值中的较大值(半径),以便完全隐藏相邻边框的圆角部分。
答案 2 :(得分:0)
这是一个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
以下是它的外观: