美文网首页
事件冲突

事件冲突

作者: dev晴天 | 来源:发表于2018-08-12 10:45 被阅读0次
    public  boolean isCheck(){
        return cb_box.isChecked();
    }
    
        // 设置是否选中  点击条目一次调用一次此方法
        public void setCheck(boolean isCheck){
              cb_box.setChecked(isCheck);
            if(isCheck){
               tv_des.setText("自动更新已开启");
            }else{
                tv_des.setText("自动更新已关闭");
            }
        }
    
    
    
      private void initUpdate() {
               final SettingItemView sivUpdate = (SettingItemView) findViewById(R.id.siv_update);
            //  设置点击事件
            sivUpdate.setOnClickListener(new View.OnClickListener() {
                   @Override
                   public void onClick(View view) {
                   // 逻辑思路 如果之前选中点击过后为未选中 如果之前为未选中点击过后为选中
                      boolean isCheck = sivUpdate.isCheck();
                       //取反
                       sivUpdate.setCheck(!isCheck);
    
                   }
               });
     /*出现bug 点击checkBox时事件不响应
                原因SettingItemView 为View控件 有点击事件 作用于整个View 而checkBox也有点击事件
               作用于自身 当点击checkBook时会相应自身的  而不响应父控件的事件
               settingActivity 对应根部局获得点击事件->settingItemView
              settingItemView 传递给 1 非checkBox区域 2 checkBox取区域 
              当checkBox响应此事件(事件就会被他消费掉 事件就不会回传了) SettingItemView就不能响应此事件  
              如果check不响应事件 事件就会回传给父控件
    
    解决思路:
       
       传给他阻止其消费
    
     1 阻止子空间消费事件 回传给父控件 (父控件想要执行某方法时)
     <CheckBox
            android:clickable="false"
            android:focusable="false"
            android:focusableInTouchMode="false"
    2 
    不传给子空间  重写传递事件的方法
    
    */
    

    相关文章

      网友评论

          本文标题:事件冲突

          本文链接:https://www.haomeiwen.com/subject/nzqsbftx.html