switch 乱跳
时间: 2023-10-17 18:06:28 浏览: 159
按钮的动态乱步
根据您提供的信息,如果switch按钮在网络请求数据未成功时就已经切换了状态,可能会导致与真实状态不符合的问题。为了解决这个问题,可以拦截组件的触摸事件并手动返回一个点击事件。以下是一种可能的解决方案:
您可以创建一个自定义的Switch组件(如您提供的MySwitch),重写onTouchEvent方法。在该方法中,您可以检查触摸事件的动作是否为ACTION_UP,如果是,则手动触发一个点击事件。代码示例如下:
```java
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;
}
}
```
通过使用这个自定义的MySwitch组件,您可以解决switch按钮乱跳的问题。这样,在网络请求数据尚未成功时,用户无法手动切换开关状态,确保与真实状态保持一致。同时,您仍然可以通过手动滑动开关来进行切换操作。
阅读全文