1

在 iOS 上,我可以采用简单的视图来填充屏幕以禁用来自用户的任何交互。

这在某些操作(保存、请求等)期间与进度条/微调器结合使用。

在 Android 中执行此操作的最佳方法是什么?我尝试使用 View/*Layout 并填充屏幕。它看起来一样,但不会阻止用户触摸事件。

目前我正在使用上述方法并有两个功能 { disableUI, resetUI }。不过,这很麻烦。

我没有想到的更好的方法?干杯。

4

2 回答 2

2

您应该使用 FragmentDialog 或 Dialog(如果您使用的是过时的 API)。

这是一个例子

public class ProgressDialogFragment extends DialogFragment {

    // ----------------------------------
    // CONSTANTS
    // ----------------------------------
    private static final String BUNDLE_KEY_TITLE = "BUNDLE_KEY_TITLE";
    private static final String BUNDLE_KEY_MESSAGE = "BUNDLE_KEY_MESSAGE";

    // ----------------------------------
    // ATTRIBUTES
    // ----------------------------------
    private String title;
    private String message;

    // ----------------------------------
    // PUBLIC METHODS
    // ----------------------------------
    public static ProgressDialogFragment newInstance(String title) {
        return createProgressDialogFragment(title, null);
    }

    public static ProgressDialogFragment newInstance(String title, String message)  {
        ProgressDialogFragment fragment = new ProgressDialogFragment();
        Bundle bundle = new Bundle();
        bundle.putString(BUNDLE_KEY_TITLE, title);
        bundle.putString(BUNDLE_KEY_MESSAGE, message);
        fragment.setArguments(bundle);
        return fragment;
    }

    // ----------------------------------
    // LIFE CYCLE
    // ----------------------------------

    @Override
    public Dialog onCreateDialog(final Bundle savedInstanceState) {
        final ProgressDialog dialog = new ProgressDialog(getActivity());
        // get params from the bundle
        if (getArguments() != null) {
            this.title = getArguments().getString(BUNDLE_KEY_TITLE);
            this.message = getArguments().getString(BUNDLE_KEY_MESSAGE);
        }
        dialog.setTitle(this.title);
        dialog.setMessage(this.message);
        dialog.setIndeterminate(true);
        dialog.setCancelable(false);
        return dialog;
    }
}
于 2013-03-15T10:03:00.427 回答
0

您可以使用正常ProgressDialog并将可取消设置为 false。见下文

ProgressDialog progDailog = ProgressDialog.show(_context,
            progressString, "Please wait...",
            true);
progDailog.setCancelable(false);

不过,您将不得不在单独的线程中运行它。AsyncTask更可取

于 2013-03-15T10:07:08.340 回答