popupWindow通过按钮显示后,按下时消失,抬起时候又显示的问题
来源:互联网 发布:简单的js特效 编辑:程序博客网 时间:2024/04/26 15:01
如果出现第一次点击Button会显示,再次点击就消失不了的问题(因为按下的时候popupWindo会先消失,但是抬起来又会显示)
(核心就是设置popupWindo的点击事件拦截监听,这里判断了是否点击到popupWindo的外面并且在指定的控件上面)
解决方案:直接来代码,
设置Pop点击事件拦截监听
public class MainActivity extends AppCompatActivity { private MePopupWindow popupWindow; private View btn; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findViewById(R.id.btn).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { showAndDismissPop(); } }); } /** * 显示pop/隐藏pop */ public void showAndDismissPop() { //隐藏pop if (popupWindow != null && popupWindow.isShowing()) { popupWindow.dismiss(); return; } //显示pop if (popupWindow == null) {//创建新的 createPopupWindow(popupWindow = new MePopupWindow(this)); } else if (!popupWindow.isShowing()) {//复用老的 popupWindow.showAsDropDown(btn); } } /** * 创建新的窗体并显示 */ public void createPopupWindow(MePopupWindow popupWindow) { View root = View.inflate(this, R.layout.pop_filtrate, null); popupWindow.setBackgroundDrawable(new BitmapDrawable()); popupWindow.setOutsideTouchable(true);//这个是点击外部消失 popupWindow.setContentView(root); setPopTouchInterceptor(); popupWindow.setWidth(FrameLayout.LayoutParams.MATCH_PARENT); popupWindow.setHeight(FrameLayout.LayoutParams.WRAP_CONTENT); popupWindow.showAsDropDown(btn); } /** * 设置Pop点击事件拦截监听 */ public void setPopTouchInterceptor() { popupWindow.setTouchInterceptor(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { popupWindow.dismiss(); //如果焦点不在popupWindow上 if (event.getAction() == MotionEvent.ACTION_OUTSIDE && !popupWindow.isFocusable()) { //并且点击到了Button上面,那么返回true,不做dismiss的操作,反之返回false return isInChangeImageZone(btn, (int) event.getRawX(), (int) event.getRawY()); } return false; } }); } private Rect mChangeImageBackgroundRect = null; /** * 判断是否点击到了指定的控件上面 */ private boolean isInChangeImageZone(View view, int x, int y) { if (null == mChangeImageBackgroundRect) { mChangeImageBackgroundRect = new Rect(); } view.getDrawingRect(mChangeImageBackgroundRect); int[] location = new int[2]; view.getLocationOnScreen(location); mChangeImageBackgroundRect.left = location[0]; mChangeImageBackgroundRect.top = location[1]; mChangeImageBackgroundRect.right = mChangeImageBackgroundRect.right + location[0]; mChangeImageBackgroundRect.bottom = mChangeImageBackgroundRect.bottom + location[1]; return mChangeImageBackgroundRect.contains(x, y); }
阅读全文
0 0
- popupWindow通过按钮显示后,按下时消失,抬起时候又显示的问题
- 解决PopupWindow实现按钮点击消失和显示,以及点击它外围可以消失的方法
- 关于点击显示PopupWindow再次点击消失的问题
- popupwindow 显示和消失的动画
- Popupwindow显示的问题
- 还有如此实现方法,没试用过,mouseEntered一个按钮的时候如何让他自动显示按钮的注释信息在一个小的注释框中??鼠标移走又小的注释框又自动消失??
- 解决UISearchDisplayController 在消失后显示navigationController.navigationBar的问题
- PopupWindow显示和消失动画,以及界面切换时动画所导致的问题
- android平台上耳机缓慢插入时图标显示后又消失的bug
- android平台上耳机缓慢插入时图标显示后又消失的bug
- 点击按钮实现表单的显示,提交数据后表单消失
- 鼠标点击文本框后,里面的文字就消失,鼠标离开文本框后,里面的文字又会显示
- 鼠标点击文本框后,里面的文字就消失,鼠标离开文本框后,里面的文字又会显示
- 鼠标点击文本框后,里面的文字就消失,鼠标离开文本框后,里面的文字又会显示
- 实现点击menu键popupWindow显示和消失,模仿微信更多按钮
- Android popupwindow点击显示,再点击消失
- android PopupWindow 显示问题
- popupWindow显示问题
- 变量
- 面向对象之抽象过程
- 2.卷2(进程间通信)---Posix IPC
- 运算符重载简单应用之分数四则运算
- windows下引入axios碰到的怪问题
- popupWindow通过按钮显示后,按下时消失,抬起时候又显示的问题
- numpy使用
- HDU2222-Keywords Search
- java入门基础知识(二)swing组件
- 科学上最舒服的十种颜色
- secureCRT连接linux后实现左键选中粘贴,右键复制
- 将Bootstrap应用到Aurelia项目中
- 树莓派部署caffe模型
- HDU2896-病毒侵袭