Я хотел бы использовать PopupWindow со следующим поведением/особенностью:избежать PopupWindow увольнения после касания снаружи
- Это фокусируемое (имеют интерактивные элементы управления внутри, например кнопка.)
- The View «под» popupwindow имеет потреблять штрихи за пределами всплывающего окна правильно
- .. но popupwindow должен остаться на экране даже после нажатия снаружи
Я нашел кучу сообщений, касающихся PopupWindo w, но никто из них не задал вопрос, как справиться с такой ситуацией.
Я думаю, что я пробовал все возможные комбинации setOutsideTouchable(), setFocusable(), setTouchable(), но я застрял. Popup имеет дело с щелчками на нем правильно, но он всегда убирается, когда касается снаружи.
Мой текущий код:
View.OnTouchListener customPopUpTouchListenr = new View.OnTouchListener(){
@Override
public boolean onTouch(View arg0, MotionEvent arg1) {
Log.d("POPUP", "Touch false");
return false;
}
};
LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
LinearLayout layout= (LinearLayout)inflater.inflate(R.layout.insert_point_dialog, null);
PopupWindow pw = new PopupWindow(layout,400,200,true);
pw.setOutsideTouchable(true);
pw.setTouchable(true);
pw.setBackgroundDrawable(new BitmapDrawable());
pw.setTouchInterceptor(customPopUpTouchListenr);
pw.showAtLocation(frameLayout, Gravity.BOTTOM, 0, 0);
Моя общая цель состоит в том, чтобы создать плавающее окно, которое ведет себя как «инструменты палитры» в программном обеспечении, как канитель: есть некоторые элементы управления внутри, остается на вершине, пока они не будут закрыты Кнопка «X» и позволяет взаимодействовать с элементами управления снаружи под ним. Может быть, есть лучший способ сделать это, а не PopupWindow? Но я еще не нашел более подходящего контроля.
Нет, что работает одинаково (всплывающее окно исчезает после нажатия на него снаружи, входя в onTouch). Как указано здесь: [link] (http://stackoverflow.com/questions/7271784/open-a-popupwindow-and-let-the-outides-still-touchable) настраиваемые всплывающие окна игнорируют setOutsideTouchable. –