背景设置点击

2017-04-07  本文已影响17人  Nj_第一批老去的90后

在Drawable文件夹下建立xml文件

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
       android:shape="rectangle">
    <corners android:bottomLeftRadius="6dp"
             android:bottomRightRadius="6dp"
             android:topLeftRadius="6dp"
             android:topRightRadius="6dp"/>
    <solid android:color="@color/roud_solid_white"/>
    <stroke android:width="1px" android:color="@color/roud_stroke_white"/>
</shape>
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/outer_bg_border_ltrb" android:state_pressed="false"/>
    <item android:drawable="@drawable/outer_bg_border_ltrb_press" android:state_pressed="true"/>
</selector>

---------------------正常状态下(边框+主题背景)-------------------
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- 边框颜色值 -->
    <item>
        <shape>
            <solid android:color="@color/black_d9" />
            <corners android:topLeftRadius="10dp"
                android:topRightRadius="10dp"
                android:bottomLeftRadius="10dp"
                android:bottomRightRadius="10dp"/>
        </shape>
    </item>
    <!-- 主体背景颜色值 -->
    <item android:top="1px" android:left="1px" android:right="1px" android:bottom="1px">
        <shape>
            <solid android:color="@color/white"/>
            <corners android:topLeftRadius="10dp"
                android:topRightRadius="10dp"
                android:bottomLeftRadius="10dp"
                android:bottomRightRadius="10dp"/>
        </shape>
    </item>
</layer-list>
---------------------点击状态下(边框+主题背景)-------------------
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- 边框颜色值 -->
    <item>
        <shape>
            <solid android:color="@color/black_d9" />
            <corners android:topLeftRadius="10dp"
                android:topRightRadius="10dp"
                android:bottomLeftRadius="10dp"
                android:bottomRightRadius="10dp"/>
        </shape>
    </item>
    <!-- 主体背景颜色值 -->
    <item android:top="1px" android:left="1px" android:right="1px" android:bottom="1px">
        <shape>
            <solid android:color="@color/white_f2"/>
            <corners android:topLeftRadius="10dp"
                android:topRightRadius="10dp"
                android:bottomLeftRadius="10dp"
                android:bottomRightRadius="10dp"/>
        </shape>
    </item>
</layer-list>

第二种方式:只有颜色变化,在String.xml里写

--string.xml----
    <!-- 批量处理按钮 -->
    <drawable name="batch_process_normal">#228fea</drawable>
    <drawable name="batch_process_pressed">#1d79c4</drawable>

将点击和正常态设置在同一个文件(layer-list作为根节点)

对于layer-list标签,从这里也可以看出来:它的绘制是==逐层绘制==的,层与层之间是没有任何影响的,每一层可以单独设置selector标签来响应不同的用户操作状态。

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape>
            <corners android:radius="25dp" />
            <solid android:color="#E4E4E4" />
        </shape>
    </item>
    <item
        android:bottom="1dp"
        android:left="1dp"
        android:right="1dp"
        android:top="1dp">
        <selector>
            <item android:state_pressed="true">
                <shape>
                    <corners android:radius="25dp" />
                    <solid android:color="#FFFF00" />
                </shape>
            </item>
            <item>
                <shape>
                    <corners android:radius="25dp" />
                    <solid android:color="#00ff00" />
                </shape>
            </item>
        </selector>
    </item>
</layer-list>

将selector作为根节点

<?xml version="1.0" encoding="utf-8"?>  
<selector xmlns:android="http://schemas.android.com/apk/res/android">  
    <item android:state_pressed="true">  
        <layer-list>  
            <item>  
                <shape>  
                    <corners android:radius="25dp"/>  
                    <solid android:color="#E4E4E4"/>  
                </shape>  
            </item>  
            <item android:left="2dp" android:top="2dp"  
                  android:bottom="2dp" android:right="2dp">  
                <shape>  
                    <corners android:radius="25dp"/>  
                    <solid android:color="#FFFF00"/>  
                </shape>  
            </item>  
        </layer-list>  
    </item>  
  
    <item>  
        <layer-list>  
            <item>  
                <shape>  
                    <corners android:radius="25dp"/>  
                    <solid android:color="#E4E4E4"/>  
                </shape>  
            </item>  
            <item android:left="2dp" android:top="2dp"  
                  android:bottom="2dp" android:right="2dp">  
                <shape>  
                    <corners android:radius="25dp"/>  
                    <solid android:color="#FFFFFF"/>  
                </shape>  
            </item>  
        </layer-list>  
    </item>  
  
</selector>  
上一篇下一篇

猜你喜欢

热点阅读