android 为控件增加选中状态

来源:互联网 发布:java private的作用 编辑:程序博客网 时间:2024/06/14 08:18

     1.  implementsCheckable 接口

       接口 提供了 三个方法 

void setChecked(boolean checked); 设置选中   boolean isChecked(); 是否选中void toggle(); 开关
    

  // android 选中状态的 标识

private static final int[] CHECKED_STATE_SET = { android.R.attr.state_checked };
@Overrideprotected int[] onCreateDrawableState(int extraSpace) {    final int[] drawableState = super.onCreateDrawableState(extraSpace + 1); 增加1个状态    if (isChecked()) {         mergeDrawableStates(drawableState, CHECKED_STATE_SET);//增加一个状态    }    return drawableState;}
@Overridepublic void setChecked(boolean b) {
    if(this.isCheck != b){
       this.isCheck = b;
       refreshDrawableState(); //关键。根据状态 刷新drawable
     }
}
@Overridepublic boolean isChecked() {    return isCheck;}
@Overridepublic void toggle() {       setChecked(!isCheck);}

// 必选要drawable 在xml 有选中状态的图片 才有效果