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();
        }
  • 相关阅读:
    echarts 报表使用
    Eclipse Java注释模板设置详解
    简单实现支付密码输入框 By HL
    一个label 混搭不同颜色,不同字体的文字.. by 徐
    有关MVC设计模式 #DF
    自定义粘贴板-陈鹏
    TableView 常用技巧与功能详解
    ios 类别和扩展-赵小波
    推荐一本书--《浪潮之巅》(完整版的哦)----董鑫
    iOS block的用法 by -- 周傅琦君
  • 原文地址:https://www.cnblogs.com/bobodeboke/p/3012447.html
Copyright © 2011-2022 走看看