【发布时间】:2011-11-15 09:48:24
【问题描述】:
我正在使用 android 兼容包版本 4 在我的应用程序中显示 pdf 页面。 我使用 PagerAdapter 和 ViewPager 来显示 pdf 页面,如水平滚动视图。
现在问题出在与分页相关的东西上。我可以通过根据这个线程android: ViewPager and HorizontalScrollVIew 检测视图分页器内的子项来停止分页,但是当用户在该视图之外触摸时,我怎样才能启用它。我为 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 中继续分页。
【问题讨论】: