How to make bottom border in drawable shape XML selector?

前端 未结 1 373
醉酒成梦
醉酒成梦 2021-01-11 18:42

I\'m trying to create a drawable shape with different states for my button. So I wrote this:



        
相关标签:
1条回答
  • 2021-01-11 19:14

    First I'm separating the shapes to make them easier to manage.

    This is your btn_negative_selector.xml

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:drawable="@xml/rectangle_button_pressed" android:state_pressed="true"></item>
        <item android:drawable="@xml/rectangle_button_focused" android:state_focused="true"></item>
        <item android:drawable="@xml/rectangle_button" ></item>
    </selector>
    

    create folder called 'xml' in your res and save these shapes into it:

    1) rectangle_button_pressed:

        <shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle" >
            <solid android:color="@color/NEGATIVE_pressed" />
            <stroke
                android:width="1dp"
                android:color="@color/ORANGE" />
            <corners android:radius="4dp" />
        </shape>
    

    2) rectangle_button_focused:

        <shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >
            <solid android:color="@color/NEGATIVE_focused" />
            <stroke
                android:width="1dp"
                android:color="@color/ORANGE" />
            <corners android:radius="4dp" />
        </shape>
    

    3) This one rectangle_button.xml will have a border at the bottom of it by defining a shape using <layer-list>. first <item> is bottom layer and last <item> is the top layer.

    <?xml version="1.0" encoding="UTF-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
        <item>
            <shape android:shape="rectangle">
                <solid android:color="@color/gray"/>
                <corners android:radius="4dp"/>
            </shape>
        </item>
        <item android:bottom="3dp">
            <shape android:shape="rectangle">
                <solid android:color="@color/orange" />
                <corners android:radius="4dp"/>
            </shape>
    
        </item>
    </layer-list>
    
    0 讨论(0)
提交回复
热议问题