Android layer-list 布局实现多颜色按钮

layer-list可以将多个图片或者效果按照顺序叠加在一起。

例如当有多套主题色时,在只需要一套默认黑色的图片资源时,对应的配置多个layer-list文件就可以实现多套主题控件。


<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">  
    <item
        android:top="4dp"
        android:bottom="4dp"
        android:left="4dp"
        android:right="4dp"
        android:gravity="center_vertical">
        <selector>
            <item android:state_enabled="false">
                <nine-patch
                   android:src="@drawable/btn_emphasis_disable"
                   android:tint="@color/btn_disable_brandcolor" />
           </item>
           <item >
                <nine-patch
                   android:src="@drawable/btn_emphasis_normal"
                   android:tint="@color/btn_nomal_brandcolor" />
           </item>
        </selector>
    </item>
    <item
        android:top="4dp"
        android:bottom="4dp"
        android:left="4dp"
        android:right="4dp"
        android:gravity="center_vertical">
        <selector>
             <item  
                 android:state_enabled="false"
                 android:drawable="@drawable/btn_emphasis_disable_boundary"
                 android:tint="@color/btn_disable_brandcolor"/>
             <item
                 android:drawable="@drawable/btn_emphasis_normal_boundary" 
                 android:tint="@color/btn_nomal_brandcolor"/>
        </selector>
    </item>
    
    <item
        android:top="4dp"
        android:bottom="4dp"
        android:left="4dp"
        android:right="4dp"
        android:gravity="center_vertical">
        <selector>
             <item android:state_window_focused="false" 
                 android:drawable="@color/transparent"/>
             
             <item android:state_pressed="true" 
                 android:drawable="@drawable/btn_emphasis_press" 
                 android:tint="@color/btn_pressed_brandcolor"/>
             <item android:state_focused="true" 
                 android:drawable="@drawable/btn_emphasis_press" />
             <item
                 android:drawable="@color/transparent" />
        </selector>
    </item>
   
</layer-list>
当需要多种颜色的控件时,通过配置tint属性,可以将默认颜色的控件染色为自己需要的控件色值,这样就尽量少的集成图片资源,减小apk大小。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值