Chciałbym użyć PopupWindow z następujących zachowań/funkcje:Unikanie PopupWindow zwolnienie po dotknięciu poza
- Jest aktywowana (zawiera interaktywne kontroli wewnątrz np przyciski.)
- The View „pod” popupwindow ma konsumować akcenty poza popup prawidłowo
- .. ale popupwindow musi pozostać na ekranie nawet po kliknięciu poza
Znalazłem kilka postów dotyczących PopupWindo w, ale żaden z nich nie zadał pytanie, jak radzić sobie z taką sytuacją ..
Myślę, że wypróbowałem każdą możliwą kombinację setOutsideTouchable(), setFocusable(), setTouchable(), ale utknąłem. Popup zajmuje się kliknięciami poprawnie, ale jest odrzucany zawsze, gdy dotyka na zewnątrz.
Mój obecny kod jest:
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);
Moja Ogólnym celem jest stworzenie pływające okno, które zachowuje się jak „palety narzędzi” w oprogramowanie, takie jak GIMP: ma wewnątrz kilka kontrolek, na wierzchu aż zamknięty Przycisk "X" i pozwalający na interakcję z kontrolkami na zewnątrz - pod nim .. Może jest jakiś lepszy sposób na zrobienie tego, a nie PopupWindow? Ale nadal nie znalazłem odpowiedniej kontroli.
Nie działa to samo (popup znika po kliknięciu na zewnątrz, wejście do onTouch). Jak podano tutaj: [link] (http://stackoverflow.com/questions/7271784/open-a-popupwindow-and-let-the-outsides-still-touchable) aktywowane wyskakujące okienka ignorują ustawienie setOutsideTouchable. –