Android 中Dialog点击空白处會消失问题

两种常规方式实现dialog不會因爲點擊空白處而消失

Dialog控件

这种情况是最简单的,Android本身自己就提供了相应的方法来实现。使用如下代码即可:

dialog.setCanceledOnTouchOutside(false);

Dialog样式

用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不消失

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值