2016-09-26 70 views
0

我做了一个带有2个选项卡的选项卡活动,一个用于登录,一个用于注册。这些标签中的每一个都是按照自己的片段设计的。如何在一个片段中点击某个按钮后禁用viewPager滚动?

我想,只要登录或注册按钮从片段中点击,viewPager不应直到正在执行的网络通话可滚动了。

什么是这样做的最佳方法是什么?有没有可能做到这一点,而不需要定义一个定制的viewpager类?

如果完整的布局冻结或活动停止服用任何类型的触摸或交换输入,用于上述时间这将是我没意见。

+0

您可以使用**不可取消,对话框**,这将显示在屏幕上方,直到网络响应为止。在ProgressDialog上使用'.setCancelable(true)'。 – lRadha

+0

该解决方案,它可以帮助你[链接](http://stackoverflow.com/questions/37873326/how-to-disable-lock-one-page-in-viewpager/37873614#37873614) –

+0

@lRadha是的,这是正是我应该做的。但对于这个项目,我将使用透明视图。但为了将来的使用,我一定会去做不可取消的对话。 –

回答

2

在轻点按钮,您可以添加ViewPager上述透明查看和设置ClickListener到了这一观点。然后,您的所有触摸将被该透明视图消耗。网络响应到来后,删除透明的视图。

+0

最好的解决方案,如果你想禁用在两个方向滑动,不需要编写自定义viewpager。 – Ritesh

+0

我不认为这是最好的解决方案。如果您编写自定义viewpager,则可以在许多布局中重新使用该viewpager。但在这种方法中,您必须在所有布局中添加透明视图。自定义viewpager提高了代码的可读性和可维护性,因为viewpager的所有启用和禁用都进入了viewpager本身。这些逻辑不会在你的活动或片段中混乱。 – Bob

+0

因为问题是“是否可以做到这一点,而没有定义一个自定义的viewpager类”,我已经回答了这个透明的视图解决方案。并且在stackoverflow中已经有大量的自定义viewpager解决方案。 – Bob

1

如果完整的布局冻结或活动在上述持续时间内停止采取任何类型的触摸或交换输入,那我就可以。

我认为你需要一个Dialog 显示进度,并调用它的setCancelable(false),当你的后台任务完成后解散()对话框

+0

是的,其实这就是我需要的。但由于我已经使用progressLayout实现了所有功能,因此我宁愿使用@Dinesh Bob建议的透明视图来执行此操作,而不是更改代码。 –

相关问题