【整理】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>

 

你可能感兴趣的:(android,xml,ListView,transition,encoding,permissions)