Android:如何在进度条处于活动状态时禁用控件

cor*_*cor 14 android android-layout android-progressbar android-view

我像往常一样在操作栏中显示我的infinte进度条:

requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
...
setProgressBarIndeterminateVisibility(true);
...
setProgressBarIndeterminateVisibility(false);
Run Code Online (Sandbox Code Playgroud)

并且真正的工作是在后台线程中完成的(AsyncTask)

问题:UI上的所有控件都已启用,因此用户可以在持久过程完成之前继续修改基础数据.

简单地禁用所有控件是不可能的,因为在禁用EditText时,Android也会自动关闭键盘.

有什么想法在后台工作期间如何防止用户输入?

谢谢,

克里斯

Chr*_*ris 7

你可以做的是调出一个不可见的对话框,防止它被取消.它将显示其下的任何内容,但禁用所有基础用户交互.一旦你完成了你的业务,你只需解雇它,继续你的生活:

Dialog mOverlayDialog = new Dialog(mContext, android.R.style.Theme_Panel); //display an invisible overlay dialog to prevent user interaction and pressing back
mOverlayDialog.setCancelable(false);
mOverlayDialog.show();  
Run Code Online (Sandbox Code Playgroud)


小智 5

尝试把 progressDialog.setcancelable(false);