"দ্রষ্টব্য যে লেআউটগুলি দেখার আগে আপনি পদ্ধতিটি কল করতে পারবেন না" "
উপরের পাঠ্যটি ক্লু।
ডায়ালগগুলির একটি শ্রোতা থাকে যা ডায়ালগ প্রদর্শিত হওয়ার পরে বরখাস্ত হয় । কথোপকথনটি যদি সেট না করা হয় তবে এটি প্রদর্শিত হবে না।
সুতরাং, onCreateDialog()
আপনার মোডাল নীচের শীটে ( BottomSheetFragment
), ডায়ালগটি ফিরে আসার ঠিক আগে (বা যে কোনও জায়গায়, একবার আপনি ডায়ালগের রেফারেন্স পেয়েছেন), কল করুন:
dialog.setOnShowListener(new DialogInterface.OnShowListener() {
@Override
public void onShow(DialogInterface dialog) {
BottomSheetDialog d = (BottomSheetDialog) dialog;
FrameLayout bottomSheet = (FrameLayout) d.findViewById(android.support.design.R.id.design_bottom_sheet);
BottomSheetBehavior.from(bottomSheet)
.setState(BottomSheetBehavior.STATE_EXPANDED);
}
});
আমার ক্ষেত্রে, আমার প্রথাটি BottomSheet
পরিণত হয়েছিল:
@SuppressWarnings("ConstantConditions")
public class ShareBottomSheetFragment extends AppCompatDialogFragment {
@NonNull @Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
BottomSheetDialog dialog =
new BottomSheetDialog(getActivity(), R.style.Haute_Dialog_ShareImage);
dialog.setContentView(R.layout.dialog_share_image);
dialog.findViewById(R.id.cancel).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dismiss();
}
});
dialog.setOnShowListener(new DialogInterface.OnShowListener() {
@Override
public void onShow(DialogInterface dialog) {
BottomSheetDialog d = (BottomSheetDialog) dialog;
FrameLayout bottomSheet = (FrameLayout) d.findViewById(android.support.design.R.id.design_bottom_sheet);
BottomSheetBehavior.from(bottomSheet).setState(BottomSheetBehavior.STATE_EXPANDED);
}
});
SwitchCompat switchview = (SwitchCompat) dialog.findViewById(R.id.switchview);
switchview.setTypeface(FontCache.get(dialog.getContext(), lookup(muli, NORMAL)));
return dialog;
}
}
আমাকে জানতে দা্ও এটা সাহয্য করে কি - না।
হালনাগাদ
মনে রাখবেন আপনি এটিকে ওভাররাইড করতে পারেন BottomSheetDialogFragment
:
public class SimpleInitiallyExpandedBottomSheetFragment extends BottomSheetDialogFragment {
@NonNull @Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
BottomSheetDialog dialog = (BottomSheetDialog) super.onCreateDialog(savedInstanceState);
dialog.setOnShowListener(new DialogInterface.OnShowListener() {
@Override
public void onShow(DialogInterface dialog) {
BottomSheetDialog d = (BottomSheetDialog) dialog;
FrameLayout bottomSheet = (FrameLayout) d.findViewById(android.support.design.R.id.design_bottom_sheet);
BottomSheetBehavior.from(bottomSheet).setState(BottomSheetBehavior.STATE_EXPANDED);
}
});
return dialog;
}
}
বেসটি BottomSheetFragment
রিটার্ন ব্যতীত অন্য কিছু না করায় কেউ কেন এটি করতে চাইবে তা আমি সত্যিই দেখতে চাই না BottomSheetDialog
।
অ্যান্ড্রয়েডএক্সের জন্য আপডেট
অ্যান্ড্রয়েডএক্স ব্যবহার করার সময়, পূর্বে পাওয়া সংস্থানটি android.support.design.R.id.design_bottom_sheet
এখন পাওয়া যাবে com.google.android.material.R.id.design_bottom_sheet
।
BottomSheetDialogFragment
সঙ্কুচিত থেকে প্রসারিত আচরণে যাওয়ার সাথে সাথে এটি প্রদর্শিত জাঙ্কিটিকে (প্রারম্ভিক অ্যানিমেশনটিতে ফ্রেমগুলি এড়িয়ে যেতে দেখা যায়) তৈরি করে। সম্পাদনা করুন: এন্ড্রয়েড মার্শমেলো এবং