Evitando el despido de PopupWindow después de tocar afuera

Me gustaría usar un PopupWindow con los siguientes comportamientos / características:

Es enfocable (tiene controles interactivos dentro, por ejemplo, botones)La ventana emergente 'debajo' de la Vista tiene que consumir los toques fuera de la ventana emergente correctamente... pero el popupwindow tiene que permanecer en pantalla incluso después de hacer clic fuera

He encontrado un montón de publicaciones con respecto a PopupWindow pero ninguno de ellos hizo preguntas sobre cómo lidiar con tal situación ...

Creo que probé todas las combinaciones posibles de setOutsideTouchable (), setFocusable (), setTouchable () pero estoy atascado. La ventana emergente trata los clics correctamente, pero se descarta siempre cuando se toca afuera.

Mi código actual es:

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

Mi objetivo general es crear una ventana flotante que se comporte como una 'paleta de herramientas' en software como gimp: tiene algunos controles en el interior, permanece en la parte superior hasta que se cierra con el botón 'X' y permite interactuar con los controles que se encuentran debajo-debajo. Tal vez hay una mejor manera de hacer esto, no una ventana emergente? Pero todavía no he encontrado un control más adecuado.

Respuestas a la pregunta(7)

Su respuesta a la pregunta