Android中Selector的用法(改变ListView和Button的默认背景)
Android中的Selector的用法
http://blog.csdn.net/shakespeare001/article/details/7788400#comments
Android中的Selector主要是用来改变ListView和Button控件的默认背景
one template:
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" > <item android:state_pressed="true" android:drawable="@drawable/ic_mymenu_pressed" /> <!-- pressed --> <item android:state_focused="true" android:drawable="@drawable/ic_mymenu_pressed" /> <!-- focused --> <item android:drawable="@drawable/ic_mymenu" /> <!-- default --> </selector>
<?xml version="1.0" encoding="utf-8" ?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 默认时的背景图片--> <item android:drawable="@drawable/pic1" /> <!-- 没有焦点时的背景图片 --> <item android:state_window_focused="false" android:drawable="@drawable/pic1" /> <!-- 非触摸模式下获得焦点并单击时的背景图片 --> <item android:state_focused="true" android:state_pressed="true" android:drawable= "@drawable/pic2" /> <!-- 触摸模式下单击时的背景图片--> <item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/pic3" /> <!--选中时的图片背景--> <item android:state_selected="true" android:drawable="@drawable/pic4" /> <!--获得焦点时的图片背景--> <item android:state_focused="true" android:drawable="@drawable/pic5" /> </selector>
ListView设置点击背景效果,有三种方法可以来引用刚才创建的selector文件:
(1)在ListView中添加如下属性代码
android:listSelector="@drawable/mylist_view"
(2)在ListView的item界面中添加如下属性代码
android:background="@drawable/mylist_view"
(3)利用JAVA代码直接编写
Drawable drawable = getResources().getDrawable(R.drawable.mylist_view);
listView.setSelector(drawable);
为了防止列表拉黑的情况发生,需要在ListView中添加以下的属性代码
android:cacheColorHint="@android:color/transparent"
or
android:cacheColorHint="#00000000"
or
listView.setCacheColorHint(0);
属性介绍:
android:state_selected 选中
android:state_focused 获得焦点
android:state_pressed 点击
android:state_enabled 设置是否响应事件,指所有事件
自定义Button Style
每个button创建的时候都是用的系统默认的风格,如果不满意系统提供的风格的话,你可以用一个 state list drawable 来替代以前的风格.每个state list drawable 是一个drawable resource. 它定义在xml文件中,并且能改变当前的每个状态的背景图.一旦定义了一个自己设计的xml文件,可以在android:background中使用它.
此xml文件中的格式如下,并且很明显发现,一个xml由一个selector元素,包含N个item元素组
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" android:constantSize=["true" | "false"] android:dither=["true" | "false"] android:variablePadding=["true" | "false"] > <item android:drawable="@[package:]drawable/drawable_resource" android:state_pressed=["true" | "false"] android:state_focused=["true" | "false"] android:state_hovered=["true" | "false"] android:state_selected=["true" | "false"] android:state_checkable=["true" | "false"] android:state_checked=["true" | "false"] android:state_enabled=["true" | "false"] android:state_activated=["true" | "false"] android:state_window_focused=["true" | "false"] />
//例子: <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:drawable="@drawable/button_pressed" /> <!-- pressed --> <item android:state_focused="true" android:drawable="@drawable/button_focused" /> <!-- focused --> <item android:state_hovered="true" android:drawable="@drawable/button_focused" /> <!-- hovered --> <item android:drawable="@drawable/button_normal" /> <!-- default --> </selector>
相关文章
- android:descendantFocusability用法简析
- Android中AsyncTask的简单用法
- 【Android】Intent介绍及Intent在Activity中的使用方法
- [Android Pro] 完美解决 No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android
- Android问题-DelphiXE5编义时提示找不到“连接器(arm-linux-androideabi-ld.exe)"
- 导入旧版本Android项目时的“Unable to resolve target ‘android
- Android Animations动画使用详解
- Android 应用启动速度优化
- usbmanger android 底下USB的工作模式
- unity调用MMBilling_2.4.2 Android SDK.
- 二、Android应用的界面编程(二)布局管理器
- Android selector item 属性大全(按钮按下不同效果)
- 【VLC-Android】vlc-android简例
- 【Android】保存Fragment切换状态
- 【Android进阶篇】最新Android源码精编解析,有效阅读源码的法门
- Android问题:Fragment not attached to Activity
- Android【报错】. lang。android.app ClassCastException。SharedPreferencesImpl不能被强制转换为android.content.Shared
- Android 视频播放
- Android【报错】java.lang.ClassCastException: android.widget.TextView cannot be cast to android.widget.Bu
- Android Studio 查询RecyclerView最新依赖方法
- Android 系列讲解(数据篇)开源的数据库ORM框架之greenDAO的详解与用法
- achartengine(Google给android提供的画图工具包)的介绍和使用
- 【Android 进程保活】oom_adj 值 ( oom_adj 值对应的进程优先级 | oom_adj 值动态改变 | 进程保活优化方向 )
- 【Android 安全】DEX 加密 ( Proguard keep 用法 | Proguard 默认混淆结果 | 保留类及成员混淆结果 | 保留注解以及被注解修饰的类/成员/方法 )
- 【Android 异步操作】手写 Handler ( 总结 | Message | MessageQueue | Looper | Handler ) ★
- Android的Bitmap和BitmapDrawable类解析-android学习之旅(六十)
- android的logcat详细用法
- NDK Android* 应用移植方法
- Android的ViewAnimator而它的子类ViewSwitcher-android学习之旅(三十三)
- Android listview与adapter用法(BaseAdapter + getView)
- android电池充电动画,Android 开机充电图标和充电动画效果