Switch点击事件会传递给NestedScrollView
时间: 2023-07-05 17:36:44 浏览: 118
Switch的点击事件不会传递给NestedScrollView,因为点击事件是不会被拦截的。点击事件会由被点击的控件先处理,如果该控件没有消耗该事件,那么该事件会一直向上传递,直到被消耗为止。
在这种情况下,如果你想要在点击Switch时不让NestedScrollView滑动,可以在Switch的父布局中加入如下代码:
```xml
android:clickable="true"
android:focusable="true"
android:focusableInTouchMode="true"
```
这样设置后,Switch和其父布局都可以接收点击事件,并且点击Switch时不会让NestedScrollView滑动。
相关问题
Switch滑动事件会传递给NestedScrollView
如果Switch的父布局设置了`android:descendantFocusability="blocksDescendants"`,那么Switch就不会拦截子视图的滑动事件,也就是说,Switch的滑动事件会传递给NestedScrollView。
为了避免这种情况,你可以在Switch的父布局中加入如下代码:
```xml
android:focusable="true"
android:focusableInTouchMode="true"
```
这样设置后,Switch和其父布局都可以接收焦点,从而避免了Switch的滑动事件被传递给NestedScrollView。
怎么禁止Android的switch上下拖动父布局NestedScrollView也跟着拖动
如果你想禁止switch控件上下拖动时,NestedScrollView跟着拖动,可以在Java代码中对switch控件进行设置。在switch控件的onTouchEvent方法中,判断触摸事件的动作类型,如果是ACTION_MOVE,就返回true,表示拦截触摸事件,不让它传递给父布局。这样就可以实现禁止switch控件上下拖动父布局NestedScrollView也跟着拖动的效果。示例代码如下:
```
Switch switchButton = findViewById(R.id.switch_button);
switchButton.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_MOVE) {
return true;
}
return false;
}
});
```
阅读全文