selector背景选择器,第一次点击变色,第二次恢复颜色

今天记录一下关于selector选择器的问题!记录我的开发之路~
下面就是demo了

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!--这个给的是CheckBox按钮的check的事件  true-->
    <item  android:state_checked="true">
        <shape android:shape="rectangle">
            <solid android:color="#fff3b229" />
            <corners android:radius="6dp" />
        </shape>
    </item>
    <!--这个给的是CheckBox按钮的check的事件  false-->
    <item android:state_checked="false">
        <shape android:shape="rectangle">
            <solid android:color="#fff4f4f4" />
            <corners android:radius="6dp" />
        </shape>
    </item>

</selector>

这里就是布局的我使用的是CheckBox
btn_quick_input_selector就是上面xml文件的名称

      <CheckBox
            android:id="@+id/bt_chick_one"
            android:layout_width="80dp"
            android:layout_height="30dp"
            android:background="@drawable/btn_quick_input_selector"
            android:button="@null"
            android:text="bt1" />

        <CheckBox
            android:id="@+id/bt_chick_two"
            android:layout_width="80dp"
            android:layout_height="30dp"
            android:background="@drawable/btn_quick_input_selector"
            android:layout_below="@id/bt_chick_one"
            android:button="@null"
            android:text="bt2" />

其实这个场景还有其他业务需要的~
比如

 mBt1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                //在checkbox选中时,点击获取checkbox的文本
                if (isChecked){
                    String checkboxText = buttonView.getText().toString();
                    Log.i("zlq", "onCheckedChanged: "+ checkboxText);
                }
            }
        });

其实关于这个selector背景选择器中参数有很好的解释,就像问什么我在开发中使用CheckBox的state_checked来完成这个功能,是有原因的~

//设置是否按压状态,一般在true时设置该属性,表示已按压状态,默认为false
//比较适用于点击的效果,像button按钮点击后变色,抬起后恢复颜色,就是普通的按压效果
android:state_pressed
//设置是否选中状态,true表示已选中,false表示未选中
//true表示被选择的状态,例如在一个下拉列表中用方向键下选择其中一个选项。
//这个和focus的区别,selected是focus不充分的情况。比如一个listview获得焦点(focus),而用方向键选择了其中的一个item(selected)
android:state_selected
//设置是否勾选状态,主要用于CheckBox和RadioButton,true表示已被勾选,false表示未被勾选
android:state_checked
//设置勾选是否可用状态,类似state_enabled,只是state_enabled会影响触摸或点击事件,state_checkable影响勾选事件
android:state_checkable
//设置是否获得焦点状态,true表示获得焦点,默认为false,表示未获得焦点
android:state_focused
//设置触摸或点击事件是否可用状态,一般只在false时设置该属性,表示不可用状态
android:state_enabled

较少使用类型

//设置当前窗口是否获得焦点状态,true表示获得焦点,false 表示未获得焦点,例如拉下通知栏或弹出对话框时, 当前界面就会失去焦点;另外,ListView的ListItem获得焦点时也会触发true状态,可以理解为当前窗口就是ListItem本身
android:state_window_focused       
//设置是否被激活状态,true表示被激活,false表示未激活,API Level 11及以上才支持,可通过代码调用控件的
android:state_activated             
//方法设置是否激活该控件
setActivated(boolean)
//设置是否鼠标在上面滑动的状态**,true表示鼠标在上面滑动,默认为false,API Level 14及以上才支持
//补充:selector标签下有两个比较有用的属性要说一下,添加了下面两个属性之后,则会在状态改变时出现淡入淡出效果,
//但必须在API Level 11及以上才支持
android:state_hovered     
//状态改变时,旧状态消失时的淡出时间,以毫秒为单位
android:exitFadeDuration      
//状态改变时,新状态展示时的淡入时间,以毫秒为单位
android:enterFadeDuration    

还有更多的使用情况请移步到原文
这里只是简单的记录一下我在开发中的问题,和类似情况~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值