Android:使用多个形状作为Button背景

时间:2014-04-08 12:59:06

标签: android android-custom-drawable

如何使用xml中定义的多个形状作为android中按钮的背景?

假设我有多个形状的xml文件,例如: -

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle">
    <solid android:color="#eeffffff" />
    <corners android:bottomRightRadius="8dip"
        android:bottomLeftRadius="8dip"  
        android:topRightRadius="8dip"
        android:topLeftRadius="8dip"/>
</shape>

我想在按钮背景中使用multishapes: -

<Button
    android:id="@+id/funkyButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="right"
    android:text="@string/txt_higher" 
    android:background="@drawable/funkyShape"/>

我如何组合多个形状以最终得到如下按钮: - ?

button

2 个答案:

答案 0 :(得分:5)

尝试像funkyShape.xml一样:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
    <shape android:shape="rectangle">
        <size 
            android:width="100dp"
            android:height="40dp" />
        <solid android:color="#ff0000" />
        <corners android:radius="30dp"/>
    </shape>
</item>

<item
    android:top="10dp"
    android:left="10dp"
    android:right="60dp"
    android:bottom="10dp">
    <rotate
        android:fromDegrees="45"
        android:toDegrees="45">
        <shape android:shape="rectangle">
            <solid android:color="#ffff00" />
            <corners android:radius="5dp"/>
        </shape>
    </rotate>
</item>

<item
    android:top="5dp"
    android:left="55dp"
    android:right="5dp"
    android:bottom="5dp">
    <shape android:shape="oval">
        <solid android:color="#0000ff" />
    </shape>
</item>

</layer-list>

答案 1 :(得分:0)

您可以尝试shape.xml,如:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
    <shape android:shape="rectangle" >
        <solid android:color="#E1BEE7" />
    </shape>
</item>
<item
    android:bottom="10dp"
    android:left="10dp"
    android:right="160dp"
    android:top="10dp">
    <shape android:shape="rectangle" >
        <solid android:color="#ff5722" />
        <corners android:radius="10dp" />
    </shape>
</item>
<item
    android:bottom="10dp"
    android:left="100dp"
    android:right="10dp"
    android:top="10dp">
    <shape
        android:innerRadius="15dp"
        android:shape="ring"
        android:thickness="10dp"
        android:useLevel="false" >
        <gradient
            android:angle="270"
            android:endColor="#e1bee7"
            android:startColor="#e040fb" />
    </shape>
</item>
<item
    android:bottom="10dp"
    android:left="250dp"
    android:right="50dp"
    android:top="10dp">
    <shape
        android:innerRadius="10dp"
        android:shape="oval" >
        <solid android:color="#8bc34a" />
    </shape>
</item>

</layer-list>