• Activity使用Dialog样式导致点击空白处自动关闭的问题


    Activity使用Dialog样式导致点击空白处自动关闭的问题
    2013-06-09 10:02 8161人阅读 评论(5) 收藏 举报
    将Activity设置成窗口的样式实现Dialog或者Popupwindow效果在开发中是很常用的一种方式,在AndroidMenifest.xml中将需要设置的Activity增加android:theme="@android:style/Theme.Dialog"属性即可。但是窗口化的Activity有个问题就是:点击窗口空白处Activity会finish。如何避免这个问题呢,办法如下:
    一、如果API Level>=11有两种方式:
    1、
    resvaluesstyles.xml
    [html] view plaincopy
    <resources>  
        <style name="Theme.SoundRecorder" parent="@android:style/Theme.Holo.DialogWhenLarge">  
            <item name="android:windowCloseOnTouchOutside">false</item>  
        </style>  
    </resources>  (这种方法无效)


    2、
    [java] view plaincopy
    YourActivity.this.setFinishOnTouchOutside(false);  (这种方法有效)

    二、如果API Level<11
    [java] view plaincopy
    @Override  
        public boolean onTouchEvent(MotionEvent event) {  
            if (event.getAction() == MotionEvent.ACTION_DOWN && isOutOfBounds(this, event)) {  
                return true;  
            }  
            return super.onTouchEvent(event);  
        }  
      
        private boolean isOutOfBounds(Activity context, MotionEvent event) {  
            final int x = (int) event.getX();  
            final int y = (int) event.getY();  
            final int slop = ViewConfiguration.get(context).getScaledWindowTouchSlop();  
            final View decorView = context.getWindow().getDecorView();  
            return (x < -slop) || (y < -slop)|| (x > (decorView.getWidth() + slop))|| (y > (decorView.getHeight() + slop));  
        }  

  • 相关阅读:
    利用python数据分析与挖掘相关资料总结
    pandas库学习笔记(一)Series入门学习
    mysql error:You can't specify target table for update in FROM clause
    查询及删除重复记录的SQL语句
    PHP tripos()函数使用需要注意的问题
    如何用git上传代码到github详细步骤
    这是我的第一篇博客
    html link js
    BOM与DOM
    创建简单的表单
  • 原文地址:https://www.cnblogs.com/zmc/p/4915540.html
Copyright © 2020-2023  润新知