Dialog点击空白处消失问题

作者: sunnygarden | 来源:发表于2017-02-18 17:27 被阅读0次

    我们平时写的dialog(对话框),除了给用户看的文字提示框可以点击空白处消失外,很多情况下不应该让其消失。比如需要让用户输密码才能进入操作界面的dialog,如果点击空白处dialog消失,用户就可以不输密码直接进入我们的应用,这显然影响了我们的功能。
    一般情况下有两种常规方式实现dialog:
    1、Android提供的Dialog控件
    这种情况是最简单的,Android本身自己就提供了相应的方法来实现。使用如下代码即可:

    dialog.setCanceledOnTouchOutside(false);
    

    这样点击dialog框外的空白处dialog也不会消失。
    2、用Activity使用Dialog样式来实现
    我们可以自定义Dialog样式来实现不同的Dialog,但是很多情况下我习惯直接用activity来实现不同样式的dialog,只要在AndroidManifest.xml文件中注册theme为Dialog即可,例如:

     <activity
        android:name="com.example.androidtest.MyDialogActivity"
        android:theme="@android:style/Theme.Holo.Light.Dialog">
     </activity>
    

    在这种情况下实现点击Dialog周围空白处该Dialog不消失有两种常用方法:
    方法一:
    Activity本身已经提供了setFinishOnTouchOutside()方法来实现该功能,我们可以使用如下代码:

    MyDialogActivity.this.setFinishOnTouchOutside(false);  
    

    其中MyDialogActivity为用来实现Dialog样式的Activity的名字
    方法二:
    自定义style,让activity使用我们自定义的theme:
    在res\values\styles.xml文件中定义自己的Dialog theme:

    <resources>  
        ……
        <style  name = "MyDialogTheme" parent = "@android:style/Theme.Holo.Light.Dialog">
            <item name="android:windowCloseOnTouchOutside">false</item>
        </style>
        ……
    </resources>  
    

    在AndroidManifest.xml文件中使自己的activity使用该theme:

     <activity
        android:name="com.example.androidtest.MyDialogActivity"
        android:theme="@style/MyDialogTheme" >
     </activity>
    

    即可实现点击Dialog外空白处Dialog不消失

    相关文章

      网友评论

        本文标题:Dialog点击空白处消失问题

        本文链接:https://www.haomeiwen.com/subject/bdmzittx.html