Android Switch禁止手动切换状态

Switch的原有特性导致在网络请求数据还未成功时,就已经切换了状态,可能与真实状态不符合,所以需要关闭手动切换的特性,使用clickable属性有点问题,能够手动滑动开关

我的解决办法是拦截组件的触摸事件,并手动返回一个点击事件,就解决了手动点击开关导致的与真实数据不一致的问题

public class MySwitch extends Switch {
    OnClickListener l;
 
    public MySwitch(Context context, AttributeSet attrs) {
        super(context, attrs);
    }
 
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        if (event.getAction() == MotionEvent.ACTION_UP)
            if (l != null)
                l.onClick(this);
        return true;
    }
 
    @Override
    public void setOnClickListener(@Nullable OnClickListener l) {
        this.l = l;
    }
}

你可能感兴趣的:(Android Switch禁止手动切换状态)