我正在使用笔划在android中的xml布局中为彩色边框制作彩色边框。
我是否可以仅将3个边(左,上,下)的笔划设为正确的NO?
答案 0 :(得分:49)
您可以通过使用图层列表并弄乱填充来实现此目的。你需要3个元素:
1:border.xml形状,它只是边框颜色的实心形状:border.xml
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#ff0000"/>
</shape>
2:'内部'形状,您希望边框出现的形状:inner.xml
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#00ff00"/>
</shape>
3:一个图层列表,它将这两个放在彼此之上。您可以通过在内部形状上设置填充来创建边框:layerlist.xml
<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/border"/>
<item android:drawable="@drawable/inner"
android:top="3dp" android:right="0dp" android:bottom="3dp"
android:left="3dp" />
</layer-list>
答案 1 :(得分:2)
使用@Mopper答案,您也可以这样。
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<solid android:color="#ff0000" />
</shape>
</item>
<item
android:bottom="3dp"
android:left="3dp"
android:right="0dp"
android:top="3dp">
<shape>
<solid android:color="#00ff00" />
</shape>
</item>
</layer-list>
答案 2 :(得分:1)
另一种方法是使用9-Patch png file作为背景。您可以通过使用普通的png文件,然后使用this之类的工具来定义:
生成9-patch png文件后,将其添加到drawables(定义各种分辨率的文件)。然后将drawable设置为您的控件背景。
shop
答案 3 :(得分:1)
这是我的解决方案,如果你想要透明或半透明的背景颜色,它就会起作用。
<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<inset xmlns:android="http://schemas.android.com/apk/res/android"
android:insetLeft="-1dp"
>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<stroke
android:color="#c45b5b5b"
android:width="1dp"/>
<corners
android:bottomLeftRadius="0dp"
android:bottomRightRadius="5dp"
android:topLeftRadius="0dp"
android:topRightRadius="5dp"
/>
</shape>
</inset>
</item>
<item
android:top="1dp"
android:right="1dp"
android:bottom="1dp"
android:left="0dp">
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/infoBox_Background"/>
<corners
android:bottomLeftRadius="0dp"
android:bottomRightRadius="5dp"
android:topLeftRadius="0dp"
android:topRightRadius="5dp"
/>
</shape>
</item>
</layer-list>