Vermeiden der PopupWindow-Entlassung nach dem Berühren von außen

Ich möchte ein PopupWindow mit folgenden Verhaltensweisen / Funktionen verwenden:

Es ist fokussierbar (verfügt über interaktive Steuerelemente in z. B. Schaltflächen)Das Popup-Fenster "Ansicht unter" muss die Berührungen außerhalb des Popups ordnungsgemäß verarbeiten.. aber das Popup-Fenster muss auf dem Bildschirm bleiben, auch nachdem Sie draußen geklickt haben

Ich habe eine Reihe von Beiträgen zu PopupWindow gefunden, aber keiner von ihnen hat mir die Frage gestellt, wie man mit einer solchen Situation umgeht.

Ich denke, ich habe jede mögliche Kombination von setOutsideTouchable (), setFocusable (), setTouchable () ausprobiert, aber ich stecke fest. Popup geht richtig mit Klicks um, aber es wird immer dann ausgeblendet, wenn es draußen berührt wird.

Mein aktueller Code ist:

<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>

Mein allgemeines Ziel ist es, ein schwebendes Fenster zu erstellen, das sich wie eine 'Werkzeugpalette' in einer Software wie gimp verhält: Es enthält einige Steuerelemente, bleibt oben, bis es mit der Schaltfläche 'X' geschlossen wird, und ermöglicht die Interaktion mit Steuerelementen außerhalb des Fensters. Vielleicht gibt es dafür einen besseren Weg, kein PopupWindow? Aber ich habe immer noch keine geeignetere Steuerung gefunden.

Antworten auf die Frage(7)

Ihre Antwort auf die Frage