Фокусируемое всплывающее окно с фокусируемым фоном - PullRequest
1 голос
/ 04 октября 2011

Мне нужно сделать всплывающее окно с несколькими кнопками.Кнопки должны быть активными, поэтому я установил свойство popupWindow как фокусируемое.Но как только я касаюсь окна popupWindow, всплывающее окно закрывается.Всплывающее окно связано с EditText.Мое требование таково, что пользователь должен иметь возможность вводить в editText, даже когда всплывающее окно видно.

                 pWindow = new PopupWindow(context);
    pWindow.setBackgroundDrawable(new BitmapDrawable());
    inflater = (LayoutInflater) context
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    popupView = (RelativeLayout) inflater.inflate(R.layout.popup, null);
    popupView.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
            LayoutParams.WRAP_CONTENT));
    pWindow.setContentView(popupView);
    pWindow.setWidth(popupView.getLayoutParams().width);
    pWindow.setHeight(popupView.getLayoutParams().height);
    pWindow.setFocusable(true);
    pWindow.setTouchable(true);
                 pWindow.showAsDropDown(anchor, 0, 0);

Я пробовал различные комбинации, но не смог достичь желаемых результатов.

1 Ответ

1 голос
/ 16 июля 2012

Чтобы ваше окно перестало закрываться при нажатии снаружи, вам нужно удалить эту строку:

pWindow.setBackgroundDrawable(new BitmapDrawable());

Не знаю, почему именно, но я знаю, что для того, чтобы сделать фон для рисования, нужно было закрыть его, щелкнув снаружи.

Теперь, что касается создания самого окна, у вас должно быть следующее:

inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
popupView =(RelativeLayout) inflater.inflate(R.layout.popup, (ViewGroup) findViewById(R.id.<IdOfLayoutInPopupXML>);
pWindow = new PopupWindow(popupView, LayoutParams.WRAP_CONTENT,  LayoutParams.WRAP_CONTENT, true);
pWindow.setTouchable(true);
pWindow.showAsDropDown(anchor, 0, 0);

Я знаю, что это старое, но это, по крайней мере, так, как я хотел бы, так как именно так работают мои всплывающие окна прямо сейчас. (за исключением того, что я не показываю как выпадающие списки).

...