我开始将ProgressDialog
中的旧Asynctask
转换为SwipeRefreshLayout
。
ProgressDialog
保证UI冻结直到Asynctask
完全完成。
如果需要冻结它,如何在使用SwipeRefreshLayout
时冻结UI?
答案 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);