我有一个ViewPager在NestedScrollView下面,有一些顶部填充,clipToPadding(false)和透明背景(如图像)。
我的ViewPager无法获取触摸事件并且无法工作。
我该如何解决这个问题?
(我不能改变我的结构,也不能将ViewPager移动到NestedScrollView的上方或将TopMargin设置为NestedScrollView)
我的ViewPager无法获取触摸事件并且无法工作。
我该如何解决这个问题?
(我不能改变我的结构,也不能将ViewPager移动到NestedScrollView的上方或将TopMargin设置为NestedScrollView)
嵌套滚动视图
nestedScrollView = new NestedScrollView(getContext());
nestedScrollView.setFillViewport(true);
nestedScrollView.setLayoutParams(scrollParams);
nestedScrollView.setClipToPadding(false);
解决方案:
这个问题可以通过重写NestedScrollView和覆盖onTouchEvent方法来解决。 (感谢@petrumo)
public class MyNestedScrollView extends NestedScrollView {
private boolean topZone = false;
public MyNestedScrollView(Context context) {
super(context);
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
if(ev.getAction() == MotionEvent.ACTION_DOWN ){
topZone = (getPaddingTop() - getScrollY() > ev.getY());
}
if(topZone){
if(ev.getAction() == MotionEvent.ACTION_UP){
topZone = false;
}
return false;
}
return super.onTouchEvent(ev);
}
}