首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在自定义对话框上显示进度对话框?

如何在自定义对话框上显示进度对话框?
EN

Stack Overflow用户
提问于 2017-12-15 13:32:49
回答 3查看 624关注 0票数 1

我有一个打开的自定义对话框,并且有一些任务我必须在它上面显示我的进度对话框。但我猜进度对话框显示在我的自定义对话框下面。下面是我尝试过的代码

我的进度对话框代码

KProgressHUD是第三方库

代码语言:javascript
运行
复制
private void progressDialog() {
    kProgressHUD = new KProgressHUD(getActivity());
    if (!kProgressHUD.isShowing()) {
        kProgressHUD.setStyle(KProgressHUD.Style.SPIN_INDETERMINATE)
                .setLabel("Please wait")
                .setCancellable(false)
                .setAnimationSpeed(2)
                .setDimAmount(0.5f)
                .show();
    }
}

我的自定义对话框代码

代码语言:javascript
运行
复制
final Dialog dialog = new Dialog(consumerHomeActivity);
    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
    dialog.setContentView(R.layout.custom_dialog_select_vendor);
    dialog.setCancelable(true);
    dialog.setCanceledOnTouchOutside(false);
    Window window = dialog.getWindow();
    window.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
    WindowManager.LayoutParams wlp = window.getAttributes();
    wlp.gravity = Gravity.CENTER;
    window.setAttributes(wlp);

    loadVendorsListFromFirebaseDB(dialog, bookingType);
    dialog.show();

方法,在其中调用进度对话框方法

代码语言:javascript
运行
复制
private void loadVendorsListFromFirebaseDB(final Dialog dialog, final String bookingType) {

    progressDialog();

    final ArrayList<VendorsList> arrayListVendorsList = new ArrayList<>();
    final ListView vendorsListLv = dialog.findViewById(R.id.custom_dialog_select_vendor_list_lv);

    DatabaseReference databaseReferenceVendorsList = firebaseDatabase.getReference("vendorsList");

    databaseReferenceVendorsList.addListenerForSingleValueEvent(new com.google.firebase.database.ValueEventListener() {
        @Override
        public void onDataChange(final com.google.firebase.database.DataSnapshot dataSnapshot) {
            arrayListVendorsList.clear();

            for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {

                String vendorEmailId = postSnapshot.getKey();
                String vendorName = postSnapshot.child("vendorName").getValue(String.class);

                VendorsList vendorsList = new VendorsList();
                vendorsList.setVendorEmailID(vendorEmailId);
                vendorsList.setVendorName(vendorName);

                arrayListVendorsList.add(vendorsList);

            }

            if (arrayListVendorsList.size() == 0) {
                StaticMethods.customSnackBar(consumerHomeActivity.parentLayout, "Sorry, no vendors available right now",
                        getResources().getColor(R.color.colorPrimaryDark),
                        getResources().getColor(R.color.error_orange), 3000);
            }

            vendorsListAdapter = new VendorsListAdapter(consumerHomeActivity, arrayListVendorsList);
            vendorsListLv.setAdapter(vendorsListAdapter);

            dismissDialog();
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-12-15 13:39:59

只需在线条下方滑动即可

代码语言:javascript
运行
复制
loadVendorsListFromFirebaseDB(dialog, bookingType);
dialog.show();

代码语言:javascript
运行
复制
dialog.show();
loadVendorsListFromFirebaseDB(dialog, bookingType);

这是因为您在显示进度对话框之后才显示对话框

票数 3
EN

Stack Overflow用户

发布于 2017-12-15 13:45:12

在将Dialog.Use it显示为之前,您正在显示进度对话框

代码语言:javascript
运行
复制
dialog.show();
loadVendorsListFromFirebaseDB(dialog, bookingType);

建议使用DialogFragment而不是对话框。它是一个带有对话框外观的片段,更适合你的需要。

票数 0
EN

Stack Overflow用户

发布于 2017-12-15 14:33:39

您首先加载数据列表,然后显示自定义对话框。因此,您的进度对话框不会显示在自定义对话框上。

请按如下所示更改您的代码,以便在加载数据列表后显示第一个自定义对话框。

代码语言:javascript
运行
复制
final Dialog dialog = new Dialog(consumerHomeActivity);

dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.custom_dialog_select_vendor);
dialog.setCancelable(true);
dialog.setCanceledOnTouchOutside(false);
Window window = dialog.getWindow();
window.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
WindowManager.LayoutParams wlp = window.getAttributes();
wlp.gravity = Gravity.CENTER;
window.setAttributes(wlp);

dialog.show();
loadVendorsListFromFirebaseDB(dialog, bookingType);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47826331

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档