首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >安卓、FragmentActivity和防刷

安卓、FragmentActivity和防刷
EN

Stack Overflow用户
提问于 2012-10-16 23:50:08
回答 1查看 2.6K关注 0票数 0

我使用android.support.v4.app.FragmentActivity创建一个具有多个片段/面板的应用程序,可以通过在应用程序的不同部分之间拖动/滑动来访问它。在我的一个片段中,我有一个可缩放的视图,我的问题是,如果我在可缩放视图上,我将阻止使用拖动/滑动到另一个片段。

我已经尝试黑进android.support.v4.view.ViewPager,以便从on Touch事件中获取操作,但不是工作。

我已经尝试了所有这种情况,但没有工作:(所有代码都是android.support.v4.view.ViewPager的子类的一部分)

案例1:

代码语言:javascript
运行
复制
// Not working
@Override
protected void onPageScrolled(int position, float offset, int offsetPixels) {
    if (isPreventDrag()) {
        super.onPageScrolled(position, 1, 0);
    } else {
        super.onPageScrolled(position, offset, offsetPixels);
    }
}

案例2:

代码语言:javascript
运行
复制
// Work but stop all event include the event to the target image view.
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
    switch (ev.getAction()) {
        case MotionEvent.ACTION_DOWN:
            lastX = ev.getX(); // float 
            lockScroll = false;
            return super.onInterceptTouchEvent(ev);
        case MotionEvent.ACTION_MOVE:
            this.lockScroll = this.isPreventDrag();
            break;
    }
    if (lockScroll) {
        ev.setLocation(lastX, ev.getY());
        return super.onInterceptTouchEvent(ev);
    } else {
        return super.onInterceptTouchEvent(ev);
    }
}

案例3:

代码语言:javascript
运行
复制
// Work good, but by some unknown error I can drag the screen
// some pixels before this stop the event.
@Override
public boolean onTouchEvent(MotionEvent ev) {

    if (this.isPreventDrag()) {
        return true;
    } else {
        return super.onTouchEvent(ev);
    }
}

我想要一个简单的方法来停用,停止或停用,如果使用是允许切换到其他片段。

这是我的工作代码,我不知道我以前犯了什么错误。

代码语言:javascript
运行
复制
// This work for me,
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
    if (this.isPreventDrag()) {
        return false;
    } else {
        return super.onInterceptTouchEvent(ev);
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-16 23:54:22

我使用这个ViewPager类来控制viewpager的“滑动能力”:

代码语言:javascript
运行
复制
public class MyViewPager extends ViewPager {

    public MyViewPager(Context context) {
        super(context);
    }

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

    private boolean blockSwipe = false;
    public void setBlockSwipe(boolean blockSwipe) {
        this.blockSwipe = blockSwipe;
    }

    @Override
    public boolean onInterceptTouchEvent(MotionEvent arg0) {
        if (blockSwipe)
            return false;
        else 
            return super.onInterceptTouchEvent(arg0);
    }

}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12918581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档