我有一个打开的自定义对话框,并且有一些任务我必须在它上面显示我的进度对话框。但我猜进度对话框显示在我的自定义对话框下面。下面是我尝试过的代码
我的进度对话框代码
KProgressHUD是第三方库
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();
}
}
我的自定义对话框代码
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();
方法,在其中调用进度对话框方法
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) {
}
});
}
发布于 2017-12-15 05:39:59
只需在线条下方滑动即可
loadVendorsListFromFirebaseDB(dialog, bookingType);
dialog.show();
至
dialog.show();
loadVendorsListFromFirebaseDB(dialog, bookingType);
这是因为您在显示进度对话框之后才显示对话框
发布于 2017-12-15 05:45:12
在将Dialog.Use it显示为之前,您正在显示进度对话框
dialog.show();
loadVendorsListFromFirebaseDB(dialog, bookingType);
建议使用DialogFragment而不是对话框。它是一个带有对话框外观的片段,更适合你的需要。
发布于 2017-12-15 06:33:39
您首先加载数据列表,然后显示自定义对话框。因此,您的进度对话框不会显示在自定义对话框上。
请按如下所示更改您的代码,以便在加载数据列表后显示第一个自定义对话框。
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);
https://stackoverflow.com/questions/47826331
复制