Android 在viewpager和EditText验证中滑动

Android 在viewpager和EditText验证中滑动,android,android-viewpager,Android,Android Viewpager,我正在开发一个应用程序,用户可以在EditText中键入内容,然后通过滑动屏幕进入下一个视图。刷卡操作由一个viewpager处理 我想做的是: 用户应只能在填写所有编辑文本时刷卡。目前,我所有的EditText都有一个TextWatcher,一旦每个字段都被填充,它就会将布尔值设置为“true”。如果是真的,我可以启用viewpager,如果不是,我可以禁用它 缺少的是,如果字段为空,用户就不会得到反馈,视图也不会滑动,但用户可能不知道原因。我需要的是,如果他试图滑动页面,显示一条文本消息,说

我正在开发一个应用程序,用户可以在EditText中键入内容,然后通过滑动屏幕进入下一个视图。刷卡操作由一个viewpager处理

我想做的是:

用户应只能在填写所有编辑文本时刷卡。目前,我所有的EditText都有一个TextWatcher,一旦每个字段都被填充,它就会将布尔值设置为“true”。如果是真的,我可以启用viewpager,如果不是,我可以禁用它

缺少的是,如果字段为空,用户就不会得到反馈,视图也不会滑动,但用户可能不知道原因。我需要的是,如果他试图滑动页面,显示一条文本消息,说明至少有一条edittext仍然为空


我曾考虑将viewpager添加到手势检测器中——这是个好主意吗?如果是,我将如何以最佳方式实现此功能?

您可以通过显示第一个不完整字段来通知用户。已经有了一个很好的方法:
EditText.setError()

如果要检测刷卡发生的时间,可以使用回调接口:

abstract void    onPageScrollStateChanged(int state)
// Called when the scroll state changes.
abstract void    onPageScrolled(int position, float positionOffset, int positionOffsetPixels)
// This method will be invoked when the current page is scrolled, either as part of a    
// programmatically initiated smooth scroll or a user initiated touch scroll.
abstract void    onPageSelected(int position)
// This method will be invoked when a new page becomes selected.

滚动页面上的
onPageScrolled
方法应该是您想要的。

我知道这个方法,但我只想在用户尝试滑动到下一页时显示它,并且不是所有字段都是必需的。我该怎么做?谢谢,但是如果必填字段为空,我该如何防止viewpager滚动(进一步)?您可以使用
mViewPager.setPaginEnabled(false)谢谢你,成功了。但是现在我有另一个问题:当我刷卡时,并没有填写所有必填字段,我禁用了viewpager。然而,页面仍然轻微地向我滑动的方向滚动。当我向前滑动时,我可以通过设置mviewpage.scrollBy(-positionOffsetPixels,0)来避免这个问题;当我之前滑动到页面时,它不会正常工作,因为positionOffsetPixels的值对应于屏幕的大小(以像素为单位)。我想我分不清向前还是向后?
abstract void    onPageScrollStateChanged(int state)
// Called when the scroll state changes.
abstract void    onPageScrolled(int position, float positionOffset, int positionOffsetPixels)
// This method will be invoked when the current page is scrolled, either as part of a    
// programmatically initiated smooth scroll or a user initiated touch scroll.
abstract void    onPageSelected(int position)
// This method will be invoked when a new page becomes selected.