打开一个PopupWindow,让外面的东西仍然可以触摸

Mar*_*los 6 android popupwindow

如何在Android上打开PopupWindow并让所有其他组件都可以触摸而不会忽略PopupWindow?

这就是它的创建方式:

public class DynamicPopup {
    private final PopupWindow window;
    private final RectF rect;
    private final View parent;
    private final RichPageView view;

    public DynamicPopup(Context context, RichPage page, RectF rectF, View parent) {
        this.parent = parent;
        rect = rectF;

        window = new PopupWindow(context);

        window.setBackgroundDrawable(new BitmapDrawable());
        window.setWidth((int) rect.width());
        window.setHeight((int) rect.height());
        window.setTouchable(true);
        window.setFocusable(true);
        window.setOutsideTouchable(true);

        view = new RichPageView(context, page, false);
        window.setContentView(view);

        view.setOnCloseListener(new Listener(){
            @Override
            public void onAction() {
                window.dismiss();
            }
        });


    }

    public void show() {
        window.showAtLocation(parent, Gravity.NO_GRAVITY, (int) rect.left, (int) rect.top);
    }
}
Run Code Online (Sandbox Code Playgroud)

Jay*_*ker 12

就像ernazm说的那样

按照javadocs

控制是否将弹出窗口外的触摸事件通知弹出窗口.这只适用于可触摸但无法调焦的弹出窗口

它正在发挥作用

window.setTouchable(true);
window.setFocusable(false);
window.setOutsideTouchable(false);
Run Code Online (Sandbox Code Playgroud)

当window touchalbe为true时,focusable为false,setOutsideTouchable()正常工作,如果setOutsideTouchable(true),则popupwindow外部的触摸将被解除,否则popupwindows的外部仍然可以在不解散的情况下触摸.


ern*_*azm 8

按照javadocs

控制是否将弹出窗口外的触摸事件通知弹出窗口.这只适用于可触摸但无法调焦的弹出窗口

所以你的路线

 window.setFocusable(true);
Run Code Online (Sandbox Code Playgroud)

导致该方法setOutsideTouchable()什么都不做.