Unikanie zwolnienia okna Popup po dotknięciu na zewnątrz
Chciałbym użyć PopupWindow z następującymi zachowaniami / funkcjami:
Jest możliwe do ustawienia (ma wewnątrz interaktywne elementy sterujące, np. Przyciski)Okno podręczne Widok „pod” musi prawidłowo wykorzystywać dotknięcia poza wyskakującym oknem.. ale okno popup musi pozostać na ekranie nawet po kliknięciu na zewnątrzZnalazłem kilka postów dotyczących PopupWindow, ale żaden z nich nie zadał pytania, jak sobie poradzić z taką sytuacją.
Myślę, że próbowałem każdej możliwej kombinacji setOutsideTouchable (), setFocusable (), setTouchable (), ale utknąłem. Popup radzi sobie z kliknięciami we właściwy sposób, ale jest zawsze odrzucany, gdy dotykasz go na zewnątrz.
Mój obecny kod to:
<code>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); </code>
Moim ogólnym celem jest stworzenie pływającego okna, które zachowuje się jak „paleta narzędzi” w oprogramowaniu takim jak gimp: ma kilka kontrolek wewnątrz, pozostaje na górze aż do zamknięcia przyciskiem „X” i pozwala na interakcję z kontrolkami poza nim. Może jest jakiś lepszy sposób, żeby to zrobić, a nie okno Popup? Ale nadal nie znalazłem bardziej odpowiedniej kontroli.