我有ViewPager,在它下面有10个按钮。通过单击按钮,例如#4,寻呼机立即通过mPager.setCurrentItem(3)转到第#4页。但是,我想通过水平滑动手指禁用分页。因此,分页只能通过单击按钮来完成。 那么,我如何禁用手指滑动?
当前回答
在kotlin
viewPagerNavigation.isUserInputEnabled = false
其他回答
另一个简单的解决方案禁用滑动特定页面(在本例中,第2页):
int PAGE = 2;
viewPager.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (viewPager.getCurrentItem() == PAGE) {
viewPager.setCurrentItem(PAGE-1, false);
viewPager.setCurrentItem(PAGE, false);
return true;
}
return false;
}
现在我们不需要创建自定义ViewPager
android中有一个新的ViewPager2名称View
垂直方向支撑
除了传统的水平分页之外,ViewPager2还支持垂直分页。你可以通过设置ViewPager2元素的android:orientation属性来启用垂直分页
使用XML
<androidx.viewpager2.widget.ViewPager2
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/pager"
android:orientation="vertical" />
使用代码
在viewpager2中禁用滑动
viewPager2.setUserInputEnabled(false);
在viewpager2使用中启用滑动
viewPager2.setUserInputEnabled(true);
要了解更多信息,请查看这个
ViewPager2 ViewPager2的外壳 手与ViewPager2
更新
请检查:从ViewPager迁移到ViewPager2 完整的例子,请检查这使用的ViewPager2在Android
如果你使用的是ViewPager2,你只需要使用:
viewpager.setUserInputEnabled(假);
从文档中可以看出:
启用或禁用用户主动滚动。这包括触摸输入(滚动和投掷手势)和可访问性输入。目前还不支持禁用键盘输入。当用户发起的滚动被禁用时,通过setCurrentItem进行的编程滚动仍然有效。默认情况下,用户主动滚动是启用的。
感谢:https://stackoverflow.com/a/61685871/9026710
如果你用ImageViews和ViewPager写一个图库,它支持缩放和平移,看到这里描述的一个简单的解决方案:通过扩展Phimpme Android中的默认ViewPager实现一个可缩放的ImageView(和Github样本- PhotoView)。这个解决方案不能单独使用ViewPager。
public class CustomViewPager extends ViewPager {
public CustomViewPager(Context context) {
super(context);
}
public CustomViewPager(Context context, AttributeSet attrs)
{
super(context,attrs);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
try {
return super.onInterceptTouchEvent(event);
} catch (IllegalArgumentException e) {
return false;
}
}
}
我需要禁用一个特定页面上的滑动,并给它一个漂亮的橡皮筋动画,以下是如何:
mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset,
int positionOffsetPixels) {
if (position == MANDATORY_PAGE_LOCATION && positionOffset > 0.5) {
mViewPager.setCurrentItem(MANDATORY_PAGE_LOCATION, true);
}
}
推荐文章
- 如何隐藏动作栏之前的活动被创建,然后再显示它?
- 是否有一种方法以编程方式滚动滚动视图到特定的编辑文本?
- 在Android中将字符串转换为Uri
- 如何在NestedScrollView内使用RecyclerView ?
- 移动到另一个EditText时,软键盘下一步点击Android
- Android应用中的GridView VS GridLayout
- Activity和FragmentActivity的区别
- 右对齐文本在android TextView
- 权限拒绝:start前台需要android.permission.FOREGROUND_SERVICE
- 如何更改android操作栏的标题和图标
- Android Split字符串
- 让一个链接在安卓浏览器启动我的应用程序?
- 如何在Android工作室的外部库中添加一个jar ?
- GridLayout(不是GridView)如何均匀地拉伸所有子元素
- 如何让一个片段删除自己,即它的等效完成()?