Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android:限制用户在ViewPager中滑动屏幕_Java_Android_Android Viewpager - Fatal编程技术网

Java Android:限制用户在ViewPager中滑动屏幕

Java Android:限制用户在ViewPager中滑动屏幕,java,android,android-viewpager,Java,Android,Android Viewpager,我有一个选项卡式活动:用户可以向右或向左滑动以更改屏幕。在某个时刻,我想录制一段音频,当它被录制时,用户不应该更改屏幕 问题:如何限制用户在ViewPager中更改屏幕(刷卡) 我试着用ViewPagerAPI来解决这个问题,但是我没有找到一个合适的方法(在ViewPager中有成百上千种方法,它们都不可能实现我想要的功能)。创建一个自定义的ViewPager,如下所示 public class CustomViewPager extends ViewPager { private b

我有一个选项卡式活动:用户可以向右或向左滑动以更改屏幕。在某个时刻,我想录制一段音频,当它被录制时,用户不应该更改屏幕

问题:如何限制用户在
ViewPager
中更改屏幕(刷卡)


我试着用
ViewPager
API来解决这个问题,但是我没有找到一个合适的方法(在
ViewPager
中有成百上千种方法,它们都不可能实现我想要的功能)。

创建一个自定义的ViewPager,如下所示

public class CustomViewPager extends ViewPager {

    private boolean enabled = true;

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

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

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

        return false;
    }

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

}

然后只需调用
viewPager.setPaginEnabled(false)

您可以扩展ViewPager类并使用此代码

public class LockableViewPager extends ViewPager {

    private boolean swipeable;

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

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

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

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        return this.swipeable && super.onTouchEvent(event);
    }

    public void setSwipeable(boolean swipeable) {
        this.swipeable = swipeable;
    }
}

然后在片段或活动中,您可以调用
mviewpage.setsweable(false)使其不可擦除。

谢谢。我将在明天试用,并让您知道。SetPaginEnabled不是一个可以在ViewPager上调用的有效方法。请看官方的Android文档:是的,我正要添加自定义视图寻呼机类,因为它没有反映出为什么要投票否决?请解释一下,谢谢。成功了。我还简化了你的代码。