我已经阅读了一些教程,但是我所能实现的只是一侧的边框,或者两侧都具有相同的颜色。我正在尝试创建一种样式,该样式将在顶部应用与底部边框不同的颜色和宽度的边框。
所以我想在上面有一个蓝色的2dp边框和在下面一个红色的3dp边框。
这是我用来在顶部和底部应用边框的样式,但是我无法更改顶部或底部的颜色。
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<shape
android:shape="rectangle">
<stroke android:width="1dp" android:color="#FF000000" />
<solid android:color="#FFDDDDDD" />
</shape>
</item>
<item android:top="1dp" android:bottom="1dp">
<shape
android:shape="rectangle">
<stroke android:width="1dp" android:color="#FFDDDDDD" />
<solid android:color="#00000000" />
</shape>
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)
它有点脏,但是可以用:)。
您的图层列表可绘制对象:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- TOP STROKE-->
<item>
<shape android:shape="rectangle">
<solid android:color="@color/top_stroke_color" />
</shape>
</item>
<!-- BOTTOM STROKE-->
<item android:top="@dimen/top_stroke_width">
<shape android:shape="rectangle">
<solid android:color="@color/bottom_stroke_color" />
</shape>
</item>
<!-- MAIN SHAPE -->
<item android:top="@dimen/top_stroke_width" android:bottom="@dimen/bottom_stroke_width">
<shape android:shape="rectangle">
<solid android:color="@color/main" />
</shape>
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)
颜色定义:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="top_stroke_color">#0000FF</color>
<color name="bottom_stroke_color">#FF0000</color>
<color name="main">#00FF00</color>
</resources>
Run Code Online (Sandbox Code Playgroud)
最后变暗:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="top_stroke_width">10dp</dimen>
<dimen name="bottom_stroke_width">20dp</dimen>
</resources>
Run Code Online (Sandbox Code Playgroud)
在我的示例中,我有3个设置了正确“边距”的矩形。我的每个矩形都小于下面的矩形并覆盖它。根据我的解决方案,您可以为您的主要形状的每一侧创建4个不同的笔触。