Dev*_*ath 76 android android-viewpager
我想做的是:我正在尝试在程序运行时以编程方式启用/禁用分页器中的滑动
例如:在流程上,如果我检查一个条件,如果它返回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 ....我可以启用滑动或禁用滑动.但我不能根据条件这样做
小智 59
最适合我的解决方案. - 首先,你创建一个这样的类:
public class CustomViewPager extends ViewPager {
private Boolean disable = false;
public CustomViewPager(Context context) {
super(context);
}
public CustomViewPager(Context context, AttributeSet attrs){
super(context,attrs);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
return !disable && super.onInterceptTouchEvent(event);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
return !disable && super.onTouchEvent(event);
}
public void disableScroll(Boolean disable){
//When disable = true not work the scroll and when disble = false work the scroll
this.disable = disable;
}
}
Run Code Online (Sandbox Code Playgroud)
- 然后在你的布局中更改它:<android.support.v4.view.ViewPager
为此<com.mypackage.CustomViewPager
- 最后,您可以禁用它:view_pager.disableScroll(true);
或启用它:view_pager.disableScroll(false);
我希望这对你有所帮助:)
Aje*_*eet 57
通过以下方式禁止滑动 -
final View touchView = findViewById(R.id.Pager);
touchView.setOnTouchListener(new View.OnTouchListener()
{
@Override
public boolean onTouch(View v, MotionEvent event)
{
return true;
}
});
Run Code Online (Sandbox Code Playgroud)
并使用此功能手动滑动
touchView.setCurrentItem(int index);
Run Code Online (Sandbox Code Playgroud)
Flo*_*lin 19
在自定义视图寻呼机适配器中,覆盖这些方法ViewPager
.
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
// Never allow swiping to switch between pages
return false;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
// Never allow swiping to switch between pages
return false;
}
Run Code Online (Sandbox Code Playgroud)
并启用,只返回每个super
方法:
super.onInterceptTouchEvent(event)
和super.onTouchEvent(event)
.
用于禁用滑动
mViewPager.beginFakeDrag();
Run Code Online (Sandbox Code Playgroud)
用于启用滑动
if (mViewPager.isFakeDragging())
mViewPager.endFakeDrag();
要禁用 viewpager2 中的滑动,请使用
viewPager2.setUserInputEnabled(false);
Run Code Online (Sandbox Code Playgroud)
要在 viewpager2 中启用滑动功能,请使用
viewPager2.setUserInputEnabled(true);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
85538 次 |
最近记录: |