যেহেতু PopupWindow
মাত্র যোগ একটি View
থেকে WindowManager
আপনি ব্যবহার করতে পারেন updateViewLayout (View view, ViewGroup.LayoutParams params)
আপডেট করার জন্য LayoutParams
আপনার এর PopupWindow
'রcontentView
প্রদর্শনী কলিং পর) .. (।
উইন্ডো পতাকা সেট উইন্ডো FLAG_DIM_BEHIND
পিছনের সবকিছু আবছা হবে। dimAmount
ম্লানির পরিমাণ নিয়ন্ত্রণ করতে ব্যবহার করুন (কোনও ধীরতার জন্য সম্পূর্ণ অস্বচ্ছ থেকে ০.০)
মনে রাখবেন যে আপনি যদি কোনও ব্যাকগ্রাউন্ড সেট করেন তবে PopupWindow
এটি আপনার contentView
পাত্রে রাখবে , যার অর্থ আপনার পিতামাতাকে আপডেট করতে হবে।
পটভূমি সহ:
PopupWindow popup = new PopupWindow(contentView, width, height);
popup.setBackgroundDrawable(background);
popup.showAsDropDown(anchor);
View container = (View) popup.getContentView().getParent();
WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
WindowManager.LayoutParams p = (WindowManager.LayoutParams) container.getLayoutParams();
// add flag
p.flags |= WindowManager.LayoutParams.FLAG_DIM_BEHIND;
p.dimAmount = 0.3f;
wm.updateViewLayout(container, p);
ব্যাকগ্রাউন্ড ছাড়াই:
PopupWindow popup = new PopupWindow(contentView, width, height);
popup.setBackgroundDrawable(null);
popup.showAsDropDown(anchor);
WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
WindowManager.LayoutParams p = (WindowManager.LayoutParams) contentView.getLayoutParams();
// add flag
p.flags |= WindowManager.LayoutParams.FLAG_DIM_BEHIND;
p.dimAmount = 0.3f;
wm.updateViewLayout(contentView, p);
মার্শমেলো আপডেট:
এম পপআপ উইন্ডোতে কন্টেন্টভিউটিকে এমডেকারভিউ নামে একটি ফ্রেমলাউটের অভ্যন্তরে আবৃত করে। আপনি যদি পপআপ উইন্ডো উত্সটি খনন করেন তবে আপনি এরকম কিছু পাবেনcreateDecorView(View contentView)
m
ব্যাকগ্রাউন্ডের সাথে এমন কিছুর পরিবর্তনের প্রয়োজন হবে:
View container = (View) popup.getContentView().getParent().getParent();
18++ API এর জন্য আরও ভাল বিকল্প
ব্যবহার করে একটি কম হ্যাকি সমাধান ViewGroupOverlay
:
1) পছন্দসই মূল লেআউটটি ধরে রাখুন
ViewGroup root = (ViewGroup) getWindow().getDecorView().getRootView();
2) কল করুন applyDim(root, 0.5f);
বাclearDim()
public static void applyDim(@NonNull ViewGroup parent, float dimAmount){
Drawable dim = new ColorDrawable(Color.BLACK);
dim.setBounds(0, 0, parent.getWidth(), parent.getHeight());
dim.setAlpha((int) (255 * dimAmount));
ViewGroupOverlay overlay = parent.getOverlay();
overlay.add(dim);
}
public static void clearDim(@NonNull ViewGroup parent) {
ViewGroupOverlay overlay = parent.getOverlay();
overlay.clear();
}