按住SWITCH不要滑动NestedScrollView
时间: 2023-09-04 16:15:37 浏览: 97
QScrollArea实现可按住滑动的效果
5星 · 资源好评率100%
如果你不希望在按住Switch时滑动NestedScrollView,可以使用以下方法:
1. 在Switch的父布局中加入如下代码:
```xml
android:descendantFocusability="blocksDescendants"
```
这样设置后,Switch将不再接收子视图的焦点,也就不会再拦截子视图的滑动事件,从而避免了与NestedScrollView的冲突。
2. 在Switch上添加一个触摸事件监听器,当用户按下Switch时,禁止NestedScrollView滑动。具体代码如下:
```java
switchView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
nestedScrollView.requestDisallowInterceptTouchEvent(true);
break;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL:
nestedScrollView.requestDisallowInterceptTouchEvent(false);
break;
}
return false;
}
});
```
上述代码中,当用户按下Switch时,我们通过`nestedScrollView.requestDisallowInterceptTouchEvent(true)`方法禁止NestedScrollView拦截触摸事件,从而使用户在按住Switch时无法滑动NestedScrollView。
当用户松开Switch时,我们通过`nestedScrollView.requestDisallowInterceptTouchEvent(false)`方法允许NestedScrollView拦截触摸事件,从而恢复NestedScrollView的滑动行为。
阅读全文