gpt4 book ai didi

android: ViewPager 和 Horizo​​ntalScrollVIew

转载 作者:IT老高 更新时间:2023-10-28 21:50:42 29 4
gpt4 key购买 nike

我的 ViewPager 中有一个 Horizo​​ntalScrollView。我设置requestDisallowInterceptTouchEvent(true); 用于 Horizo​​ntalScrollViewViewPager 有时仍会拦截触摸事件。是否有其他命令可以用来防止 View 的父级和祖先级拦截触摸事件?

注意:Horizo​​ntalScrollView 只占屏幕的一半。

最佳答案

我遇到了同样的问题。我的解决方案是:

  1. 创建一个ViewPager 的子类并添加一个名为childId 的属性。
  2. childId 属性创建一个 setter,并设置 Horizo​​ntalScrollView 的 id。
  3. ViewPager 的子类中重写 onInterceptTouchEvent() 并且如果 childId 属性大于 0,则获取该子类,如果事件是在 Horizo​​ntalScrollView 区域返回 false。

代码

public class CustomViewPager extends ViewPager {

private int childId;

public CustomViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}

@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
if (childId > 0) {
View scroll = findViewById(childId);
if (scroll != null) {
Rect rect = new Rect();
scroll.getHitRect(rect);
if (rect.contains((int) event.getX(), (int) event.getY())) {
return false;
}
}
}
return super.onInterceptTouchEvent(event);
}

public void setChildId(int id) {
this.childId = id;
}
}

onCreate()方法中

viewPager.setChildId(R.id.horizontalScrollViewId);
adapter = new ViewPagerAdapter(this);
viewPager.setAdapter(adapter);

希望有帮助

关于android: ViewPager 和 Horizo​​ntalScrollVIew,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6920137/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com