Android PopupWindow सक्रिय होने पर धुंधला या मंद पृष्ठभूमि


85

जब मैं अपने पॉपअप विंडो का उपयोग करके popup.showAtLocationदिखाऊंगा, तो मैं बैकग्राउंड को ब्लर या डिम कर सकता हूं , और कॉल करने पर बैकग्राउंड को अनबेल / डिम कर सकता हूं popup.dismiss

मैंने लेआउट परमेस FLAG_BLUR_BEHINDऔर FLAG_DIM_BEHINDअपनी गतिविधि पर लागू करने की कोशिश की है , लेकिन यह मेरा ऐप शुरू होते ही पृष्ठभूमि को धुंधला और मंद कर देता है।

मैं सिर्फ पॉपअप के साथ धुंधला / धुंधला कैसे कर सकता हूं?


1
चेतावनी का शब्द: FLAG_BLUR_BEHIND कुछ फोन पर छोटी गाड़ी है और फोन को बहुत अधिक गैर-जिम्मेदार बनाता है (जाहिर है कि सॉफ्टवेयर में धुंधला हो गया है)। उदाहरण के लिए, Droid पर। इसके अलावा, मैकार्से ने क्या कहा - FLAG_BLUR_BEHIND को अग्रभूमि पर विंडो में लागू करने की आवश्यकता है।
EboMike


1
मैं इस सवाल का एक ही जवाब ढूंढ रहा हूं। क्या कोई तरीका है जिससे मैं प्रोग्रामिक रूप से उस दृश्य को मंद कर सकता हूं जो पॉपअपविंडो के पीछे है?
निक

1
@ आप इस समस्या को कैसे हल करते हैं ..
अमित

जवाबों:


106

सवाल Popupwindowकक्षा के बारे में था , फिर भी हर किसी ने जवाब दिया है कि Dialogकक्षा का उपयोग करें । यदि आपको Popupwindowकक्षा का उपयोग करने की आवश्यकता है, तो यह बहुत बेकार है , क्योंकि Popupwindowएक getWindow()विधि नहीं है ।

मुझे एक समाधान मिला है जो वास्तव में साथ काम करता है Popupwindow। इसके लिए केवल यह आवश्यक है कि पृष्ठभूमि गतिविधि के लिए आपके द्वारा उपयोग की जाने वाली xml फ़ाइल का रूट a FrameLayout। आप Framelayoutतत्व को एक android:foregroundटैग दे सकते हैं । यह टैग क्या करता है एक निर्दिष्ट संसाधन है जिसे संपूर्ण गतिविधि के शीर्ष पर स्तरित किया जाएगा (जो कि, अगर Framelayout xml फ़ाइल में मूल तत्व है)। फिर आप setAlpha()अग्रभूमि की अस्पष्टता ( ) को नियंत्रित कर सकते हैं ।

आप अपनी पसंद के किसी भी आकर्षित करने योग्य संसाधन का उपयोग कर सकते हैं, लेकिन यदि आप केवल एक प्रभावशाली प्रभाव चाहते हैं, तो ड्रा करने योग्य फ़ोल्डर <shape>में रूट के रूप में टैग के साथ एक xml फ़ाइल बनाएं ।

<?xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >
    <solid android:color="#000000" />
</shape>

( तत्व के बारे में अधिक जानकारी के लिए http://developer.android.com/guide/topics/resource/drawable-resource.html#Shape देखें shape)। ध्यान दें कि मैंने रंगीन टैग में एक अल्फा मान निर्दिष्ट नहीं किया है जो कि ड्रॉएबल आइटम को पारदर्शी (जैसे #ff000000) बना देगा। इसका कारण यह है कि कोई भी हार्डकोड अल्फ़ा वैल्यू setAlpha()हमारे कोड के माध्यम से हमारे द्वारा सेट किए गए किसी भी नए अल्फा वैल्यू को ओवरराइड करता है, इसलिए हम ऐसा नहीं चाहते हैं। हालांकि, इसका मतलब है कि ड्रॉबल आइटम शुरू में अपारदर्शी (ठोस, गैर-पारदर्शी) होगा। इसलिए हमें इसे गतिविधि की onCreate()विधि में पारदर्शी बनाने की आवश्यकता है ।

यहाँ Framelayout xml तत्व कोड है:

<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/mainmenu"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:foreground="@drawable/shape_window_dim" >
...
... your activity's content
...
</FrameLayout>

यहां गतिविधि की ऑनक्रिएट () विधि है:

public void onCreate( Bundle savedInstanceState)
{
  super.onCreate( savedInstanceState);

  setContentView( R.layout.activity_mainmenu);

  //
  // Your own Activity initialization code
  //

  layout_MainMenu = (FrameLayout) findViewById( R.id.mainmenu);
  layout_MainMenu.getForeground().setAlpha( 0);
}

अंत में, गतिविधि को मंद करने के लिए कोड:

layout_MainMenu.getForeground().setAlpha( 220); // dim

layout_MainMenu.getForeground().setAlpha( 0); // restore

अल्फा मान 0(अपारदर्शी) से 255(अदृश्य) तक जाते हैं। पॉपअपविंडो को खारिज करने पर आपको गतिविधि को अन-डिम करना चाहिए।

मैंने पॉपअपविंडो को दिखाने और खारिज करने के लिए कोड को शामिल नहीं किया है, लेकिन यहां एक लिंक दिया गया है कि यह कैसे किया जा सकता है: http://www.mobilemancer.com/2011/01/08/popup-window-in-android/


यह सुनिश्चित करने के लिए कि यह पुराने उपकरणों पर काम करता है, आपको भी इसके अल्फा-चैनल में किए गए हर बदलाव के बाद अग्रभूमि को अमान्य करना होगा। मैंने इसे उत्तर में जोड़ दिया। अच्छा जवाब के लिए +1
15:22 पर user2224350

1
मुझे लगता है कि यह सही जवाब के रूप में चिह्नित नहीं है जो एक कारण के बारे में नहीं सोच सकता है .. कम से कम कहने के लिए भयानक जवाब।
जयशील दवे

2
एक्शनबार के बारे में आपका क्या विचार है, आप इसे धुंधला नहीं कर सकते
बाडो

यह मेरे लिए सबसे अच्छा काम करता है ... नीचे दिए गए डबल पॉपअप उत्तर में एक दौड़ की स्थिति थी इसलिए मंद पॉपअप कभी-कभी असली पॉपअप से अधिक होता था
kenyee

1
लगभग आदर्श। एकमात्र दोष यह है कि आपको फ़्रेमलैटआउट का उपयोग करना होगा क्योंकि अन्य लेआउट के लिए कोई "गेटफ़ोरग्राउंड" विधि नहीं है।
लियांगवेग

79

चूँकि आप कॉल करने के लिए PopupWindowसिर्फ एक कहते हैं, शो कॉल करने के बाद अपने 's' को अपडेट करने के लिए उपयोग कर सकते हैं ।ViewWindowManagerupdateViewLayout (View view, ViewGroup.LayoutParams params)LayoutParamsPopupWindowcontentView

खिड़की के झंडे FLAG_DIM_BEHINDको स्थापित करना खिड़की के पीछे सब कुछ मंद कर देगा। dimAmountमंद की मात्रा को नियंत्रित करने के लिए उपयोग करें (1.0 किसी भी मंद के लिए पूरी तरह से अपारदर्शी के लिए 1.0)।

ध्यान रखें कि यदि आप अपनी पृष्ठभूमि सेट करते हैं, तो 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);

मार्शमैलो अपडेट:

M PopupWindow में सामग्री को एक फ़्रेमलेयआउट के अंदर लपेटता है जिसे mDecorView कहा जाता है। यदि आप PopupWindow स्रोत में खुदाई करते हैं, तो आपको कुछ ऐसा मिलेगा createDecorView(View contentView)। mDecorView का मुख्य उद्देश्य ईवेंट प्रेषण और सामग्री संक्रमणों को संभालना है, जो एम। के लिए नए हैं। इसका मतलब है कि कंटेनर को एक्सेस करने के लिए हमें एक और .getParent () को जोड़ना होगा।

ऐसी पृष्ठभूमि के लिए जिसे कुछ बदलाव की आवश्यकता होगी जैसे:

View container = (View) popup.getContentView().getParent().getParent();

एपीआई 18+ के लिए बेहतर विकल्प

एक कम हैसी समाधान का उपयोग कर 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();
}

2
यह अब Android 6.0 Marshmallow चलाने वाले उपकरणों पर काम नहीं करता है। ले-आउटपाम नहीं डाले गए WindowManager.LayoutParams। क्या आसपास कोई काम है?
रॉबर्ट

इस पर ध्यान दिलाने के लिए धन्यवाद। मैंने इसे अभी तक एम पर परीक्षण नहीं किया है। ASAP को अपडेट करेगा।
मार्कस रूबे

@ stackoverflow.com/users/308153/robert मेरा भी यही मुद्दा था। मैंने पृष्ठभूमि के साथ ऊपर कोड का उपयोग किया।
रिजवान सोहैब

यदि p अशक्त है तो इसका उपयोग करें:if (p != null) { //same } else { popupView.addOnLayoutChangeListener(new View.OnLayoutChangeListener() { public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) { v.removeOnLayoutChangeListener(this); WindowManager.LayoutParams p = (WindowManager.LayoutParams) v.getLayoutParams(); p.flags = WindowManager.LayoutParams.FLAG_DIM_BEHIND; p.dimAmount = 0.3f; wm.updateViewLayout(v, p); } }); }
Beytan Kurt

1
FYI करें जब मैं इसे निम्न API स्तरों (जैसे 15 और 20) पर उपयोग करता हूँ, तो यह क्रैश हो जाता है क्योंकि popup.getContentView ()। GetParent () वापस नहीं आता है, इसलिए इसे देखें तो यह क्रैश हो जाएगा। इस मामले के लिए मैंने फॉलबैक के रूप में @ BeytanKurt का तरीका इस्तेमाल किया।
मैथ्यू होर्स्ट

29

अपनी xml फ़ाइल में चौड़ाई और ऊँचाई के साथ कुछ इस तरह जोड़ें 'match_parent'।

<RelativeLayout
        android:id="@+id/bac_dim_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#C0000000"
        android:visibility="gone" >
</RelativeLayout>

अपनी गतिविधि में आगे बढ़ें

//setting background dim when showing popup
back_dim_layout = (RelativeLayout) findViewById(R.id.share_bac_dim_layout);

जब आप अपना पॉपअपविंडो दिखाते हैं तब अंत में दृश्यमान होते हैं और जब आप पॉपअपविंडो से बाहर निकलते हैं तो यह दृश्यमान हो जाता है।

back_dim_layout.setVisibility(View.VISIBLE);
back_dim_layout.setVisibility(View.GONE);

1
कृपया पोस्ट में "धन्यवाद, रूपेश" जैसे हस्ताक्षर न छोड़ें।
साइमन हेलिंजर

3
लेकिन यह कार्रवाई / टूल बार को मंद नहीं करेगा।
सिल्विया एच

Plz मुझे बताएं कि कैसे टूलबार मंद कार्रवाई की जाए
SAndroidD

add back_dim_layout.setVisibility (View.GONE); पॉपअपविंडो.ऑनडिज़म लिस्टनर में
पुलकित

यकीन है कि मेरी मदद की
Pixxu Waku

12

एक और चाल है कि एक के बजाय 2 पॉपअप विंडो का उपयोग किया जाए। पहली पॉपअप विंडो केवल पारदर्शी पृष्ठभूमि के साथ एक डमी दृश्य होगी जो मंद प्रभाव प्रदान करती है। दूसरी पॉपअप विंडो आपकी इच्छित पॉपअप विंडो है।

पॉप अप विंडो बनाते समय अनुक्रम: डमी पॉप अप विंडो को पहले दिखाएं और फिर इच्छित पॉपअप विंडो को।

नष्ट करते समय अनुक्रम: इच्छित पॉप अप विंडो को खारिज करें और फिर डमी पॉप अप विंडो।

इन दोनों को जोड़ने का सबसे अच्छा तरीका एक OnDismissListener को जोड़ना है और onDismiss()अपने से डमी पॉपअप विंडो को डिमिस करने के इरादे की विधि को ओवरराइड करना है।

डमी पॉपअप विंडो के लिए कोड:

fadepopup.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" 
    android:id="@+id/fadePopup"
    android:background="#AA000000">
</LinearLayout>

पृष्ठभूमि को मंद करने के लिए फीका पॉपअप दिखाएं

private PopupWindow dimBackground() {

    LayoutInflater inflater = (LayoutInflater) EPGGRIDActivity.this
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    final View layout = inflater.inflate(R.layout.fadepopup,
            (ViewGroup) findViewById(R.id.fadePopup));
    PopupWindow fadePopup = new PopupWindow(layout, windowWidth, windowHeight, false);
    fadePopup.showAtLocation(layout, Gravity.NO_GRAVITY, 0, 0);
    return fadePopup;
}

मेरे लिए लगभग काम करता है ... कभी-कभी, एक दौड़ की स्थिति होती है जहां पॉपअपविंडो मंद / डमी पॉपअप विंडो के पीछे होता है। अभी तक एक वर्कअराउंड नहीं मिला है ... यहां तक ​​कि पॉपअपविंडो के प्रदर्शन में देरी करने के लिए इसे समय देने के पीछे एक भी मदद नहीं करता है :-P
kenyee

2
@kenyee मैंने इस समस्या के लिए एक समाधान पाया है। मैं पहले 'फीका' पॉपअप दिखाता हूं, और फिर दूसरा पॉपअप दिखाने के लिए मैं myFadePopup.getContentView () पोस्ट (myPopup.showAtLocation ...) का उपयोग कर रहा हूं;
पियोट्र

5

मैंने इसके लिए एक समाधान ढूंढ लिया है

एक कस्टम पारदर्शी संवाद बनाएं और उस संवाद के अंदर पॉपअप विंडो खोलें:

dialog = new Dialog(context, android.R.style.Theme_Translucent_NoTitleBar);
emptyDialog = LayoutInflater.from(context).inflate(R.layout.empty, null);

/* blur background*/
WindowManager.LayoutParams lp = dialog.getWindow().getAttributes();  
lp.dimAmount=0.0f;  
dialog.getWindow().setAttributes(lp);  
dialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND); 
dialog.setContentView(emptyDialog);
dialog.setCanceledOnTouchOutside(true);
dialog.setOnShowListener(new OnShowListener()
{
    @Override
    public void onShow(DialogInterface dialogIx)
    {
        mQuickAction.show(emptyDialog); //open the PopupWindow here
    }
});
dialog.show();

संवाद के लिए xml (R.layout.empty):

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_height="match_parent" android:layout_width="match_parent"
     style="@android:style/Theme.Translucent.NoTitleBar" />

जब आप पॉपअप विंडो खारिज करते हैं तो आप संवाद को खारिज करना चाहते हैं। इसलिए

mQuickAction.setOnDismissListener(new OnDismissListener()
{
    @Override
    public void onDismiss()
    {
        if(dialog!=null)
        {
            dialog.dismiss(); // dismiss the empty dialog when the PopupWindow closes
            dialog = null;
        }
    }
});

नोट: मैंने NewQuickActionयहाँ PopupWindow बनाने के लिए प्लगइन का उपयोग किया है। इसे देशी पॉपअप विंडोज पर भी किया जा सकता है


1

मेरे लिए, अब्देलहाक मौआमाउ के उत्तर कार्यों की तरह कुछ, एपीआई स्तर 16 और 27 पर परीक्षण किया गया।

popupWindow.getContentView().getParent()परिणाम का उपयोग करने और डालने के बजाय View(जो एपीआई स्तर 16 पर दुर्घटनाग्रस्त हो जाता है क्योंकि यह एक ViewRootImplवस्तु देता है जो इसका उदाहरण नहीं है View) मैं सिर्फ उपयोग करता हूं.getRootView() करता जो पहले से ही एक दृश्य देता है, इसलिए वहां कोई कास्टिंग आवश्यक नहीं है।

आशा है कि यह किसी की मदद करता है :)

अन्य स्टैकओवरफ्लो पोस्ट से एक साथ काम करने वाले पूर्ण उदाहरण को कॉपी-पेस्ट करके, उदाहरण के लिए, एक बटन के ऑनक्लिक श्रोता में:

// inflate the layout of the popup window
LayoutInflater inflater = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);
if(inflater == null) {
    return;
}
//View popupView = inflater.inflate(R.layout.my_popup_layout, null); // this version gives a warning cause it doesn't like null as argument for the viewRoot, c.f. /programming/24832497 and /programming/26404951
View popupView = View.inflate(MyParentActivity.this, R.layout.my_popup_layout, null);

// create the popup window
final PopupWindow popupWindow = new PopupWindow(popupView,
        LinearLayout.LayoutParams.WRAP_CONTENT,
        LinearLayout.LayoutParams.WRAP_CONTENT,
        true // lets taps outside the popup also dismiss it
        );

// do something with the stuff in your popup layout, e.g.:
//((TextView)popupView.findViewById(R.id.textview_popup_helloworld))
//      .setText("hello stackoverflow");

// dismiss the popup window when touched
popupView.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            popupWindow.dismiss();
            return true;
        }
});

// show the popup window
// which view you pass in doesn't matter, it is only used for the window token
popupWindow.showAtLocation(view, Gravity.CENTER, 0, 0);
//popupWindow.setOutsideTouchable(false); // doesn't seem to change anything for me

View container = popupWindow.getContentView().getRootView();
if(container != null) {
    WindowManager wm = (WindowManager)getSystemService(Context.WINDOW_SERVICE);
    WindowManager.LayoutParams p = (WindowManager.LayoutParams)container.getLayoutParams();
    p.flags = WindowManager.LayoutParams.FLAG_DIM_BEHIND;
    p.dimAmount = 0.3f;
    if(wm != null) {
        wm.updateViewLayout(container, p);
    }
}


0

आप ऐसा करने के android:theme="@android:style/Theme.Dialog"लिए उपयोग कर सकते हैं । एक गतिविधि बनाएं और अपनी AndroidManifest.xmlगतिविधि को इस रूप में परिभाषित करें:

    <activity android:name=".activities.YourActivity"
              android:label="@string/your_activity_label"
              android:theme="@android:style/Theme.Dialog">

यह चाल नहीं लगती है। मैंने इसे अपनी एकमात्र गतिविधि पर लागू किया, जो कि पृष्ठभूमि में है जब मैं एक पॉपअप विंडो दिखाता हूं जो मेरे पास केवल एक फुलाया हुआ लेआउट है, और एक अलग गतिविधि नहीं है। मैं एक पॉपअप विन्डोज़ में FLAG_BLUR_BEHIND कैसे लागू करूं?
k_day

0

ठीक है, इसलिए मैं पॉप विंडो खुली होने पर बैकग्राउंड एक्टिविटी को कम करने के लिए उहमदद का जवाब देता हूं । लेकिन यह मेरे लिए समस्या पैदा करता है। यह गतिविधि को कम कर रहा था और इसमें पॉपअप विंडो शामिल है (इसका मतलब है कि गतिविधि और पॉपअप दोनों पर डिमर्ड-ब्लैक लेयर्ड है, इसे अलग नहीं किया जा सकता है)।

तो मैंने इस तरह से कोशिश की,

डाइमिंग प्रभाव के लिए एक dimming_black.xml फ़ाइल बनाएँ ,

 <?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="#33000000" />
</shape>

और जैसा रूट xml टैग के रूप backgroundमें जोड़ें FrameLayout, LinearLayoutइस तरह से मेरे अन्य नियंत्रण भी रखेंlayout.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="@drawable/ff_drawable_black">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_gravity="bottom"
        android:background="@color/white">

        // other codes...
    </LinearLayout>

</FrameLayout>

अंत में मैं MainActivityनीचे के रूप में कुछ अतिरिक्त पैरामीटर सेट के साथ मेरे ऊपर पॉपअप दिखाता हूं ।

           //instantiate popup window
            popupWindow = new PopupWindow(viewPopup, LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT, true);

            //display the popup window
            popupWindow.showAtLocation(layout_ff, Gravity.BOTTOM, 0, 0);

परिणाम: यहाँ छवि विवरण दर्ज करें

यह मेरे लिए काम करता है, बाडो द्वारा टिप्पणी के रूप में भी हल की गई समस्या । इससे Actionbarभी मंद पड़ सकता है।

पी एस मैं नहीं कह रहा हूँ कि उहमदड गलत है। मैंने उसका उत्तर सीखा और अपनी समस्या के लिए विकसित होने का प्रयास किया। मुझे भी भ्रम हुआ कि यह अच्छा तरीका है या नहीं।

किसी भी सुझाव की सराहना की है भी मेरी बुरी अंग्रेजी के लिए खेद है।


0

शायद यह रेपो आपके लिए मदद करेगा: बेसपॉप

यह मेरा रेपो है, जिसका उपयोग पॉपअपविंडो की विभिन्न समस्याओं को हल करने के लिए किया जाता है।

पुस्तकालय का उपयोग करने के मामले में, यदि आपको पृष्ठभूमि को धुंधला करने की आवश्यकता है, तो बस कॉल करें setBlurBackgroundEnable(true).

अधिक जानकारी के लिए विकी देखें। in भाषा में zh-cn more

BasePopup: विकि


-1

यह कोड काम करता है

        pwindo = new PopupWindow(layout, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, true);
        pwindo.showAtLocation(layout, Gravity.CENTER, 0, 0);
        pwindo.setOutsideTouchable(false);

        View container = (View) pwindo.getContentView().getParent();
        WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
        WindowManager.LayoutParams p = (WindowManager.LayoutParams) container.getLayoutParams();
        p.flags = WindowManager.LayoutParams.FLAG_DIM_BEHIND;
        p.dimAmount = 0.3f;
        wm.updateViewLayout(container, p);
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.