zoukankan      html  css  js  c++  java
  • 点击外围区域使得popupwindow消失

    popupwindow,对话框式的activity,dialog都可以实现对话框的效果;前两者还都可以实现出现时候的动画效果。

    如果想要点击popupwindow之外的区域使之消失,在新建popupwindow之后,需要设置一下属性

    pop = new PopupWindow(460, 600);
            // 默认是不能获取焦点
        pop.setContentView(contentView);
        pop.setAnimationStyle(R.anim.fade_in);
    pop.setFocusable(true); pop.setBackgroundDrawable(res.getDrawable(R.drawable.setting_bg)); pop.setTouchInterceptor(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_OUTSIDE) { if (pop != null && pop.isShowing()) { pop.dismiss(); } return true; } return false; } });

    注意上面的三条操作设置焦点、设置背景、设置监听事件缺一不可才能达到效果。

    如果不要求点击其他任何区域都消失,而是按一次返回键的时候popwindow消失,再点一次的时候推出应用,那么可以监听返回键的监听事件:

        public boolean onKeyDown(int keyCode, KeyEvent event) {
            if (event.KEYCODE_BACK == keyCode) {
                if (pop.isShowing()) {
                    pop.dismiss();
                } else {
                    ActivityExit.exit(SetupActivity.this);
                }
            }
            return true;
    
        }


    但是这样发现了一个问题,发现当切换到其他的activity的时候,popupwindow依然会悬挂在其他activity上,并不会消失,想要解决这个问题,可以监听当前activity的onpause事件,在这里判断

    if(pop!=null&&pop.isShowing()){
            pop.dismiss();
        }
  • 相关阅读:
    scala之伴生对象的继承
    scala之伴生对象说明
    “Failed to install the following Android SDK packages as some licences have not been accepted” 错误
    PATH 环境变量重复问题解决
    Ubuntu 18.04 配置java环境
    JDBC的基本使用2
    DCL的基本语法(授权)
    ZJNU 1374
    ZJNU 2184
    ZJNU 1334
  • 原文地址:https://www.cnblogs.com/bobodeboke/p/3012447.html
Copyright © 2011-2022 走看看