我有ViewPager,在它下面我有10个按钮.通过单击按钮,例如#4,寻呼机立即转到第4页mPager.setCurrentItem(3);.但是,我想通过水平手指滑动来禁用分页.因此,寻呼完成仅通过点击按钮.那么,我怎么能用手指禁用滑动?
我想做的是:我正在尝试在程序运行时以编程方式启用/禁用分页器中的滑动
例如:在流程上,如果我检查一个条件,如果它返回true启用滑动,如果条件返回false禁用滑动.
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;
} }
Run Code Online (Sandbox Code Playgroud)
然后选择此项而不是XML中的内置viewpager
<mypackage.CustomViewPager
android:id="@+id/myViewPager"
android:layout_height="match_parent"
android:layout_width="match_parent" />
Run Code Online (Sandbox Code Playgroud)
您只需要使用"false"调用"setPagingEnabled"方法,用户将无法滑动到分页.
上述方法的问题:我无法在流上设置属性,I:e ....我可以启用滑动或禁用滑动.但我不能根据条件这样做 …
有两个片段的viewpager.其中一个片段有一个布局,可以在X轴上监听onTouch的变化.
当沿X轴触摸和滑动时,布局几乎不会获得所有Action.Move事件.似乎viewpager有一个返回true的onInterceptTouchEvent.
覆盖viewpager的行为以使它和我的布局协同工作是真的吗?因此,完美的情况是布局拦截其上的所有onTouch事件,viewpager管理其余的onTouch事件.谢谢!
我正在创建一个包含带有可滑动标签的视图寻呼机的应用程序我想在视图寻呼机内部进行一些操作,并且在操作时我想在操作完成后禁用滑动视图启用滑动视图可以任何人告诉我如何这样做,我的活动正在提前感谢片段活动
当您使用setPageMargin为ViewPager设置负边距时,页面将变得小于ViewPager的整个宽度.这样做的副作用是用户可以使用一个长手势来多次更改活动页面.
有没有办法阻止单个手势多次更改页面?
我试图阻止动作事件到达寻呼机,但你必须让MotionEvent.ACTION_UP通过或者寻呼机无法正常工作.up还会触发ViewPager中基于速度的计算,并在触发时导致额外的页面更改.
我需要重置拖动的速度,或者我需要以某种方式阻止其他页面更改.
我已经使用了这个问题的答案中描述的方法来停止滚动但是描述的ACTION_UP问题阻止我完成它. 是否可以禁用ViewPager上的滚动
有任何想法吗?
在我的Android应用程序中,我有一个viewpager,它有一个imageView列表.可以绘制每个视图.当我绘制它时,我仍然可以从viewpager滑动到下一个视图.如何在用户开始绘制imageView时禁用分页.
我将自定义子视图放入 ViewPager。我在拦截触摸事件方面没有任何重要经验,所以这对我来说都是全新的。
我在 SO 和其他博客上查看了大量与此相关的问题,但到目前为止,没有任何建议的建议对我有太大帮助。
我的自定义视图有两个相互重叠的面板。我需要允许用户在不将这些触摸事件传递给父 ViewPager 的情况下滑动最前面的面板。
我很难理解这一点,因为似乎我的观点onTouchEvent总是被调用,尽管false在我观点的onInterceptTouchEvent. 我的理解在这里可能是错误的,但我的印象是返回false应该意味着我的观点onTouchEvent不应该被调用。
这是我的自定义视图的代码:
package com.example.dm78.viewpagertouchexample;
import android.content.Context;
import android.support.v4.view.GestureDetectorCompat;
import android.util.AttributeSet;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
import android.widget.TextView;
public class MyCustomView extends FrameLayout {
public static final String TAG = MyCustomView.class.getSimpleName();
private GestureDetectorCompat mGestureDetector;
private PanelData mPanelData;
private LinearLayout mFrontPanel;
private float xAdditive;
private float mFrontPanelInitialX = Float.NaN;
private float mDownX = Float.NaN;
private float frontPanelXSwipeThreshold = …Run Code Online (Sandbox Code Playgroud) 我正在尝试使Viewpager具有可编辑的文本,但是我不希望Viewpager在编辑文本框时滚动。我试图通过使用viewpager的beginFakeDrag和endFakeDrag函数禁用滚动,这会导致viewpager忽略所有触摸事件。出于某种原因,如果先调用beginFakeDrag之后再调用endFakeDrap,它将运行良好,但是当分离时,它将引发以下错误:
03-08 17:54:00.511: E/AndroidRuntime(31362): FATAL EXCEPTION: main
03-08 17:54:00.511: E/AndroidRuntime(31362): java.lang.NullPointerException
03-08 17:54:00.511: E/AndroidRuntime(31362): at android.support.v4.view.ViewPager.endFakeDrag(ViewPager.java:1683)
03-08 17:54:00.511: E/AndroidRuntime(31362): at gtg.gis.RequestActivity$2.onFocusChange(RequestActivity.java:115)
03-08 17:54:00.511: E/AndroidRuntime(31362): at android.view.View.onFocusChanged(View.java:2742)
03-08 17:54:00.511: E/AndroidRuntime(31362): at android.widget.TextView.onFocusChanged(TextView.java:7080)
03-08 17:54:00.511: E/AndroidRuntime(31362): at android.view.View.clearFocus(View.java:2639)
03-08 17:54:00.511: E/AndroidRuntime(31362): at android.view.ViewGroup.clearFocus(ViewGroup.java:522)
03-08 17:54:00.511: E/AndroidRuntime(31362): at android.view.View.setFlags(View.java:4645)
03-08 17:54:00.511: E/AndroidRuntime(31362): at android.view.View.setVisibility(View.java:3116)
03-08 17:54:00.511: E/AndroidRuntime(31362): at gtg.gis.RequestActivity$1.onClick(RequestActivity.java:95)
03-08 17:54:00.511: E/AndroidRuntime(31362): at android.view.View.performClick(View.java:2485)
03-08 17:54:00.511: E/AndroidRuntime(31362): at android.view.View$PerformClick.run(View.java:9089)
03-08 17:54:00.511: E/AndroidRuntime(31362): at android.os.Handler.handleCallback(Handler.java:587)
03-08 17:54:00.511: E/AndroidRuntime(31362): at android.os.Handler.dispatchMessage(Handler.java:92)
03-08 17:54:00.511: E/AndroidRuntime(31362): at …Run Code Online (Sandbox Code Playgroud)