gpt4 book ai didi

android - 在 Android 的 ViewPager 中禁用和启用分页

转载 作者:可可西里 更新时间:2023-11-01 19:07:36 24 4
gpt4 key购买 nike

我正在使用 android 兼容包版本 4 在我的应用程序中显示 pdf 页面。我使用 PagerAdapter 和 ViewPager 来显示 pdf 页面,例如水平 ScrollView 。

现在问题出在分页相关的东西上。我可以根据这个线程 android: ViewPager and HorizontalScrollVIew 检测 viewpager 内的 child 来停止分页。 ,但是当用户触摸该 View 之外时,我如何才能启用它。我为 CustomViewPager 使用了以下代码。

public class CustomViewPager extends ViewPager {

private boolean enabled;
private int childId;

public CustomViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
this.enabled = true;
}

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

@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
boolean result = false;
View scroll = getChildAt(childId);
if (scroll != null) {
Rect rect = new Rect();
CommonLogic.logMessage("PDF Page Rectangle ", TAG, Log.VERBOSE);
scroll.getHitRect(rect);
if (rect.contains((int) event.getX(), (int) event.getY())) {
setPagingEnabled(false);
result = true;
}
}
return result;
}

@Override
public boolean onTouchEvent(MotionEvent event) {
if (this.enabled) {
return super.onTouchEvent(event);
}
return false;
}

public void setPagingEnabled(boolean enabled) {
this.enabled = enabled;
}
}

当尝试触摸 pdf 页面外部时,if(scroll!=null) 在两个方向上都变为 true。

任何人都可以帮助我了解如何重新启用它,以便在 ViewPager 中继续分页。

最佳答案

我在处理需要双指缩放的分页图像文件时遇到了类似的问题。简单地说,需要一种方法来在放大图像时禁用分页,并在显示整个图像时启用分页。我这样解决了它,认为你可以做类似的事情。首先扩展:类 MyViewPager 扩展 ViewPager {...}然后在该类中重写以下两种方法

    @Override
public boolean onTouchEvent(MotionEvent event) {
if (YOUR_CRITERIA_TOENABLE_DISABLE) {
return true;

} else {
return super.onTouchEvent(event);
}
}

@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
return super.onInterceptTouchEvent(event);
}

请务必在 xml 布局或从代码动态创建中使用 View 分页器。

关于android - 在 Android 的 ViewPager 中禁用和启用分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8134336/

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