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

时间:2012-09-06 13:05:38

标签: android android-layout android-view android-progressbar

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

requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
...
setProgressBarIndeterminateVisibility(true);
...
setProgressBarIndeterminateVisibility(false);

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

中完成的

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

无法简单地禁用所有控件,因为在禁用EditText时,Android也会自动关闭键盘。

如何在后台工作期间阻止用户输入的任何想法?

谢谢,

克里斯

4 个答案:

答案 0 :(得分: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();  

答案 1 :(得分:5)

尝试progressDialog.setcancelable(false);

答案 2 :(得分:2)

您正尝试仅设置“活动属性”。而是使用。创建一个对话框 ProgressDialog,以便Ui无法访问

ProgressDialog dialog = ProgressDialog.show(this, "", "Please wait...", true);

编辑: 如果您不想使用ProgressDialog,请获取根布局并调用

layout.setEnabled(false)

答案 3 :(得分:1)

万一,如果其他人遇到同样的问题,

禁用编辑文字使用:EditText.setFocusable(false);

启用编辑:EditText.setFocusableInTouchMode(true);