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的外部仍然可以在不解散的情况下触摸.
按照javadocs
控制是否将弹出窗口外的触摸事件通知弹出窗口.这只适用于可触摸但无法调焦的弹出窗口
所以你的路线
window.setFocusable(true);
Run Code Online (Sandbox Code Playgroud)
导致该方法setOutsideTouchable()什么都不做.
| 归档时间: |
|
| 查看次数: |
10003 次 |
| 最近记录: |