mAn*_*oid 132 android android-viewpager
我有一个ViewPager实例化a View.当搜索结果返回到视图时,我想暂时禁用viewpager和子按钮的滚动.我打电话viewPager.setEnabled(false)但这不会禁用它.
有人有任何想法吗?
sla*_*ton 349
一个简单的解决方案是创建自己的子类,ViewPager其中包含一个private boolean标志isPagingEnabled.然后覆盖onTouchEvent和onInterceptTouchEvent方法.如果isPagingEnabledequals为true,则调用该super方法return.
public class CustomViewPager extends ViewPager {
private boolean isPagingEnabled = true;
public CustomViewPager(Context context) {
super(context);
}
public CustomViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
return this.isPagingEnabled && super.onTouchEvent(event);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
return this.isPagingEnabled && super.onInterceptTouchEvent(event);
}
public void setPagingEnabled(boolean b) {
this.isPagingEnabled = b;
}
}
Run Code Online (Sandbox Code Playgroud)
然后在您的Layout.XML文件<com.android.support.V4.ViewPager>中用<com.yourpackage.CustomViewPager>标签替换任何标签.
此代码改编自此博客文章.
Akh*_*ran 34
这个有一个简单的解决方法:
如果要禁用viewpager滚动,则:
mViewPager.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View arg0, MotionEvent arg1) {
return true;
}
});
Run Code Online (Sandbox Code Playgroud)
当你想重新获得它时:
mViewPager.setOnTouchListener(null);
Run Code Online (Sandbox Code Playgroud)
那就行了.
rek*_*ire 28
这是我对slayton答案的轻量级变体:
public class DeactivatableViewPager extends ViewPager {
public DeactivatableViewPager(Context context) {
super(context);
}
public DeactivatableViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
return !isEnabled() || super.onTouchEvent(event);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
return isEnabled() && super.onInterceptTouchEvent(event);
}
}
Run Code Online (Sandbox Code Playgroud)
使用我的代码,您可以禁用分页setEnable().
小智 18
我找到了一个简单的解决方
//disable swiping
mViewPager.beginFakeDrag();
//enable swiping
mViewPager.endFakeDrag();
Run Code Online (Sandbox Code Playgroud)
M. *_*mor 11
我建议另一种解决这个问题的方法.我们的想法是用scrollView包装你的viewPager,这样当这个scrollView不可滚动时,你的viewPager也是不可滚动的.
这是我的XML布局:
<HorizontalScrollView
android:id="@+id/horizontalScrollView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true" >
<android.support.v4.view.ViewPager
android:id="@+id/viewPager"
android:layout_width="wrap_content"
android:layout_height="match_parent" />
</HorizontalScrollView>
Run Code Online (Sandbox Code Playgroud)
无需代码.
对我来说很好.
小智 9
在我使用 ViewPager 2 alpha 2 的情况下,以下代码段有效
viewPager.isUserInputEnabled = false
能够禁用用户输入 (setUserInputEnabled, isUserInputEnabled)
请参阅此以了解viewpager2 1.0.0-alpha02 中的更多更改
最新版本 ViewPager 2 alpha 4 也进行了一些更改
方向和 isUserScrollable 属性不再是 SavedState 的一部分
有关viewpager2#1.0.0-alpha04 中的更多更改,请参阅此内容
要禁用滑动
mViewPager.beginFakeDrag();
Run Code Online (Sandbox Code Playgroud)
启用滑动
mViewPager.endFakeDrag();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
106506 次 |
| 最近记录: |