我正在创建一个包含可滑动选项卡的视图页面应用程序,我想在视图页面内执行一些操作,并在操作完成时禁用滑动视图,完成后启用滑动视图。 请问有谁能告诉我如何做到这一点?我的活动继承了碎片活动,谢谢。
我正在创建一个包含可滑动选项卡的视图页面应用程序,我想在视图页面内执行一些操作,并在操作完成时禁用滑动视图,完成后启用滑动视图。 请问有谁能告诉我如何做到这一点?我的活动继承了碎片活动,谢谢。
创建一个名为 CustomViewPager
的新类。该类继承自 ViewPager
,并包括一个名为 setPagingEnabled
的新方法。要启用/禁用滑动,则只需重写两个方法:onTouchEvent
和 onInterceptTouchEvent
。如果分页被禁用,则两者均返回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);
CustomViewPager
的新类,并在你的片段活动和 XML 文件中使用该 CustomViewPager
,而不是 ViewPager
。 - Priyank Patel尝试以下方法
要禁用滑动,请调用
viewPager.beginFakeDrag();
要启用滑动,请调用
viewPager.endFakeDrag();