Android中使用XML自定义组件各种状态下的背景图片

需要用到Android的Selector,它可以根据组件的状态显示该状态对应的图片做为显示背景。
把下面的XML文件保存成自己命名的.xml文件,比如list_bg.xml。
注意,这个文件相当于一个背景图片选择器,在系统使用时根据ListView中的列表项的状态来使用相应的背景图片。
什么情况使用什么图片我在下面都进行了说明。
还有,你可以把它看成是一个图片来使用,放于drawable目录下,

配置背景属性android:background="@drawable/list_bg"就能达到你需要的目的了。


    <?xml version="1.0" encoding="utf-8" ?>   
    <selector xmlns:android="http://schemas.android.com/apk/res/android">  
    <item android:state_window_focused="false"   
    android:drawable="@drawable/没有焦点时的图片背景" />   
    <item android:state_focused="true" android:state_pressed="true"   
    android:drawable=  
    "@drawable/非触摸模式下获得焦点并单击时的背景图片" />   
    <item android:state_focused="false" android:state_pressed="true"   
    android:drawable="@drawable/触摸模式下单击时的背景图片" />   
    <item android:state_selected="true"   
    android:drawable="@drawable/选中时的图片背景" />   
    <item android:state_focused="true"   
    android:drawable="@drawable/获得焦点时的图片背景" />   
    </selector>   


源代码ListView列表项背景的默认实现
SDK目录/tools/lib/res/default/drawable/list_selector_background.xml
内容如下:
    <?xml version="1.0" encoding="utf-8"?>  
    <!-- Copyright (C) 2008 The Android Open Source Project  
      
         Licensed under the Apache License, Version 2.0 (the "License");  
         you may not use this file except in compliance with the License.  
         You may obtain a copy of the License at  
        
              http://www.apache.org/licenses/LICENSE-2.0  
        
         Unless required by applicable law or agreed to in writing, software  
         distributed under the License is distributed on an "AS IS" BASIS,  
         WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
         See the License for the specific language governing permissions and  
         limitations under the License.  
    -->  
      
    <selector xmlns:android="http://schemas.android.com/apk/res/android">  
      
        <item android:state_window_focused="false"  
            android:drawable="@color/transparent" />  
      
        <!-- Even though these two point to the same resource, have two states so the drawable will invalidate itself when coming out of pressed state. -->  
        <item android:state_focused="true" android:state_enabled="false"  
            android:state_pressed="true"  
            android:drawable="@drawable/list_selector_background_disabled" />  
        <item android:state_focused="true" android:state_enabled="false"  
            android:drawable="@drawable/list_selector_background_disabled" />  
      
        <item android:state_focused="true" android:state_pressed="true"  
            android:drawable="@drawable/list_selector_background_transition" />  
        <item android:state_focused="false" android:state_pressed="true"  
            android:drawable="@drawable/list_selector_background_transition" />  
      
        <item android:state_focused="true"  
            android:drawable="@drawable/list_selector_background_focus" />  
      
    </selector>  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值