12 个解决方案
#1
popupWindow.setOutsideTouchable(true);
popupWindow.setFocusable(true);
popupWindow.setFocusable(true);
#2
popup好像有个isShowing()方法,返回true和false,去判断popup是否显示就可以了。
#3
有一个设置点击别处不消失的属性。。。。
#4
现在就是这样设置的,但是在popwindow弹出的情况下点击右上角菜单键,popwindow会先消失,再出现,在这种情况下我想要的是只消失掉
#5
现在已经判断了,但是popupWindow.setOutsideTouchable(true);监听的是手指按下的动作,为按钮设置的点击事件是手指抬起的动作触发,导致popwindow弹出的情况下点击右上角菜单键,popwindow会先消失,再出现,在这种情况下我想要的是只消失掉
#6
那点击别的地方(除了popwindow本身)就不会消失了 啊
#7
根据你描述的情况,你应该是每次都new出一个新的popup,你把popup写成单例模式试试。
#8
popupWindow.setOutsideTouchable(true);
popupWindow.setFocusable(true);
#9
现在就是这样设置的,但是在popwindow弹出的情况下点击右上角菜单键,popwindow会先消失,再出现,在这种情况下我想要的是只消失掉
popupWindow.setOutsideTouchable(true);
popupWindow.setFocusable(true);
根据你描述的情况,你应该是每次都new出一个新的popup,你把popup写成单例模式试试。
#10
在你点击弹出popowinddow的view上添加点击事件view.setOnClick(false), 然后在popwind初始化后设置popupwindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
@Override
public void onDismiss() {
handler.postDelayed(new Runnable() {
@Override
public void run() {
view.setClickable(true);
}
}, 100);
}
});,这样可以解决你的问题!
@Override
public void onDismiss() {
handler.postDelayed(new Runnable() {
@Override
public void run() {
view.setClickable(true);
}
}, 100);
}
});,这样可以解决你的问题!
#11
感谢qq_21724641,qq_21724641的方法可行
#12
由于PopupView本身并没有重写Key和Touch事件的处理,所以如果没有包这个外层容器类,点击Back键或者外部区域是不会导致弹框消失的。设置了PopupWindow的background,点击Back键或者点击弹窗的外部区域,弹窗就会dismiss.
至于第二次点击如果显示就让他消失,可以这样:给PopupView设置一个监听器,如下
popupWindow.setTouchInterceptor(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return false;
}
});
在onTouch()里面进行判断,如果是第二次点击,就让他消失,不再显示。
不知道思路对不对,供参考
至于第二次点击如果显示就让他消失,可以这样:给PopupView设置一个监听器,如下
popupWindow.setTouchInterceptor(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return false;
}
});
在onTouch()里面进行判断,如果是第二次点击,就让他消失,不再显示。
不知道思路对不对,供参考
#1
popupWindow.setOutsideTouchable(true);
popupWindow.setFocusable(true);
popupWindow.setFocusable(true);
#2
popup好像有个isShowing()方法,返回true和false,去判断popup是否显示就可以了。
#3
有一个设置点击别处不消失的属性。。。。
#4
popupWindow.setOutsideTouchable(true);
popupWindow.setFocusable(true);
#5
popup好像有个isShowing()方法,返回true和false,去判断popup是否显示就可以了。
#6
有一个设置点击别处不消失的属性。。。。
#7
现在就是这样设置的,但是在popwindow弹出的情况下点击右上角菜单键,popwindow会先消失,再出现,在这种情况下我想要的是只消失掉
popupWindow.setOutsideTouchable(true);
popupWindow.setFocusable(true);
根据你描述的情况,你应该是每次都new出一个新的popup,你把popup写成单例模式试试。
#8
popupWindow.setOutsideTouchable(true);
popupWindow.setFocusable(true);
#9
现在就是这样设置的,但是在popwindow弹出的情况下点击右上角菜单键,popwindow会先消失,再出现,在这种情况下我想要的是只消失掉
popupWindow.setOutsideTouchable(true);
popupWindow.setFocusable(true);
根据你描述的情况,你应该是每次都new出一个新的popup,你把popup写成单例模式试试。
#10
在你点击弹出popowinddow的view上添加点击事件view.setOnClick(false), 然后在popwind初始化后设置popupwindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
@Override
public void onDismiss() {
handler.postDelayed(new Runnable() {
@Override
public void run() {
view.setClickable(true);
}
}, 100);
}
});,这样可以解决你的问题!
@Override
public void onDismiss() {
handler.postDelayed(new Runnable() {
@Override
public void run() {
view.setClickable(true);
}
}, 100);
}
});,这样可以解决你的问题!
#11
感谢qq_21724641,qq_21724641的方法可行
#12
由于PopupView本身并没有重写Key和Touch事件的处理,所以如果没有包这个外层容器类,点击Back键或者外部区域是不会导致弹框消失的。设置了PopupWindow的background,点击Back键或者点击弹窗的外部区域,弹窗就会dismiss.
至于第二次点击如果显示就让他消失,可以这样:给PopupView设置一个监听器,如下
popupWindow.setTouchInterceptor(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return false;
}
});
在onTouch()里面进行判断,如果是第二次点击,就让他消失,不再显示。
不知道思路对不对,供参考
至于第二次点击如果显示就让他消失,可以这样:给PopupView设置一个监听器,如下
popupWindow.setTouchInterceptor(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return false;
}
});
在onTouch()里面进行判断,如果是第二次点击,就让他消失,不再显示。
不知道思路对不对,供参考