Android中Selector的用法

Selector的优势

shape只能定义单一的形状,而实际应用中,很多地方比如按钮、Tab、ListItem等都是不同状态有不同的展示形状。举个例子,一个按钮的背景,默认时是一个形状,按下时是一个形状,不可操作时又是另一个形状。有时候,不同状态下改变的不只是背景、图片等,文字颜色也会相应改变。而要处理这些不同状态下展示什么的问题,就要用selector来实现了。

Selector可以表示的不同状态


android:state_enabled: 设置触摸或点击事件是否可用状态,一般只在false时设置该属性,表示不可用状态

android:state_pressed: 设置是否按压状态,一般在true时设置该属性,表示已按压状态,默认为false

android:state_selected: 设置是否选中状态,true表示已选中,false表示未选中

android:state_checked: 设置是否勾选状态,主要用于CheckBox和RadioButton,true表示已被勾选,false表示未被勾选

android:state_checkable: 设置勾选是否可用状态,类似state_enabled,只是state_enabled会影响触摸或点击事件,而state_checkable影响勾选事件

android:state_focused: 设置是否获得焦点状态,true表示获得焦点,默认为false,表示未获得焦点

android:state_window_focused: 设置当前窗口是否获得焦点状态,true表示获得焦点,false表示未获得焦点,例如拉下通知栏或弹出对话框时,当前界面就会失去焦点;另外,ListView的ListItem获得焦点时也会触发true状态,可以理解为当前窗口就是ListItem本身

android:state_activated: 设置是否被激活状态,true表示被激活,false表示未激活,API Level 11及以上才支持,可通过代码调用控件的setActivated(boolean)方法设置是否激活该控件


Selector的使用

在drawable文件夹内创建.xml文件

Android中Selector的用法_第1张图片

然后在布局文件中将控件的style属性设置为想要设置的selector.xml文件名即可

Android中Selector的用法_第2张图片



你可能感兴趣的:(Android开发学习)