如何在安卓中的视图页中禁用滑动?

15

我正在创建一个包含可滑动选项卡的视图页面应用程序,我想在视图页面内执行一些操作,并在操作完成时禁用滑动视图,完成后启用滑动视图。 请问有谁能告诉我如何做到这一点?我的活动继承了碎片活动,谢谢。


你2小时前已经问过同样的问题了! - Hans1984
是的,伙计,我正在使用片段活动,这是我的主要问题。@Hans1984 - lakshman sundeep
那你为什么要再问一遍呢???这不是这个网站的目的。 - Hans1984
还是非常相似。好吧,我会让管理员处理的。 - Hans1984
我找到了一个对我很有效的好解决方案:https://dev59.com/AGsz5IYBdhLWcg3wj4ra#42687397 - Pradeep Kumar Kushwaha
2个回答

41

创建一个名为 CustomViewPager 的新类。该类继承自 ViewPager ,并包括一个名为 setPagingEnabled 的新方法。要启用/禁用滑动,则只需重写两个方法:onTouchEventonInterceptTouchEvent。如果分页被禁用,则两者均返回false。

以下是完整代码:

package com.yourpackage;

import android.content.Context;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.view.MotionEvent;

public class CustomViewPager extends ViewPager {

private boolean enabled;

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

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

    return false;
}

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

    return false;
}

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

然后在您的layout.xml文件中,将任何<com.android.support.V4.ViewPager>标签替换为如下所示的<com.yourpackage.CustomViewPager>标签。

<com.yourpackage.CustomViewPager 
android:id="@+id/photosViewPager" 
android:layout_height="match_parent" 
android:layout_width="match_parent" />

现在在您的活动中使用CustomViewPager而不是ViewPager。就这样。现在,随时要禁用滑动,只需调用setPagingEnabled方法并将其设置为false即可。

CustomViewPager mViewPager = (CustomViewPager) findViewById(R.id.pager);
mViewPager.setPagingEnabled(false);

我没有得到任何覆盖片段活动的方法,你能帮我吗?@Priyank - lakshman sundeep
抱歉,伙计,我没看到,我正在检查中 @Chandrakanth。 - lakshman sundeep
你需要创建一个名为 CustomViewPager 的新类,并在你的片段活动和 XML 文件中使用该 CustomViewPager,而不是 ViewPager - Priyank Patel
运行得非常好!基本上最好是扩展并在单独的类中管理代码,而不是在 Activity 中做这些不干净的工作。谢谢! - sud007
这个完美运作,而且很容易掌握.. 感谢 @Priyank Patel - Martin j
显示剩余5条评论

-5

尝试以下方法

要禁用滑动,请调用

viewPager.beginFakeDrag();

要启用滑动,请调用

viewPager.endFakeDrag();

我需要在其中传递任何布尔值吗?@Chandrakanth - lakshman sundeep
1
请查看我的更新答案。 - Chandrakanth
应用程序在那个方法上卡住了,伙计 @Chandrakanth - lakshman sundeep
2
这个怎么禁用分页? - IgorGanapolsky

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接