如何在android中为3个方面创建一个笔画?

时间:2011-07-02 17:50:27

标签: android

我正在使用笔划在android中的xml布局中为彩色边框制作彩色边框。

我是否可以仅将3个边(左,上,下)的笔划设为正确的NO?

4 个答案:

答案 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之类的工具来定义:

  1. 您的内容在png中所在的区域。
  2. 当底层控件以宽度或高度增长时,png的区域会伸展。
  3. 生成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>