SwipeRefreshLayout需要冻结UI

时间:2016-06-15 07:44:00

标签: android progressdialog swiperefreshlayout

我开始将ProgressDialog中的旧Asynctask转换为SwipeRefreshLayoutProgressDialog保证UI冻结直到Asynctask完全完成。

如果需要冻结它,如何在使用SwipeRefreshLayout时冻结UI?

4 个答案:

答案 0 :(得分:1)

您可以使用解决方法。当您提示刷新显示对话框,并将视图的可见性更改为不可见时,您将使屏幕变暗,并且可以在刷新完成后关闭对话框。

答案 1 :(得分:1)

当您实现SwipeRefreshLayout.OnRefreshListener时,有一个覆盖方法onRefresh(),您可以在其中管理其他视图,例如使所有按钮可点击或使其无法点击。

您还可以放置一个透明图层,以便轻松管理整个屏幕,并且无法轻松。

您可以在xml中添加一个父框架,例如框架,哪个背景将变为透明。

现在你需要做的是当你想要禁用屏幕设置的点击时,透明的布局可见性是可见的,并且不要为该布局附加点击监听器,以便自动子视图将无法点击,并且当您想要允许用户单击这是它的视图时,使该视图消失。希望你得到概念

答案 2 :(得分:0)

您应该在视图上使用透明或半透明背景的布局。确保此背景涵盖您的所有视图。但请注意,您应该为您的布局设置android:clickable =“true”。然后,无法单击此透明布局下的项目,因此您使布局冻结,不再选择任何项目。例如,你可以使用这样的布局:

<RelativeLayout
            android:id="@+id/main_layout"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:clickable="true"
            android:background="@android/color:transparent"
            android:visibility="gone"/>

答案 3 :(得分:0)

我知道这是一个老问题。但是有一天某人会从我的回答中受益。所以我们开始吧!

<刷新>刷新开始时使用以下代码,冻结UI。

getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE,
WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);

在刷新后紧随其后的代码,以恢复触摸事件

getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);