关于使用AlertDialog -弹出对话框使用的一些细节。
1 低版本和高版本对话框。当我们在activity清单文件使用NoTitleBar主题时,高版本会向下兼容,使用低版本的对话框
如果想去掉TitleBar并且使用高版本对话框,我们可以将系统主题设置<item name="android:windowNoTitle">true</item>
复制到Application节点的Theme主题--AppTheme里,这样整个应用都会使用NoTitleBar并且使用高版本的对话框。
2 对话框焦点的抢夺。当AlertDialog.Builder builder =new Builder(); builder.setCancelable(false);对话框抢到焦点
之后当我们点击其他区域或者点击返回键将没有效果,对话框成功的抢到焦点。这种方式我们可以使用在:当我们的应用程序
需要强制升级时,可以使用这种方式,当时用户的体验效果不是很好。
对话框使用的 常用方式。
当点击其他区域或者返回键,用户默认想法是取消这个对话框,所以需要让应用直接进入主页面。通过:
builder.setOnCancelListener(new OnCancelListener(){
public void onCancel(DialogInterface dialog){
enterHome();//进入主页面
dialog.dismiss();//取消对话框
}
});
1 低版本和高版本对话框。当我们在activity清单文件使用NoTitleBar主题时,高版本会向下兼容,使用低版本的对话框
如果想去掉TitleBar并且使用高版本对话框,我们可以将系统主题设置<item name="android:windowNoTitle">true</item>
复制到Application节点的Theme主题--AppTheme里,这样整个应用都会使用NoTitleBar并且使用高版本的对话框。
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
<item name="android:windowNoTitle">true</item>
<!-- All customizations that are NOT specific to a particular API-level can go here. -->
</style>
2 对话框焦点的抢夺。当AlertDialog.Builder builder =new Builder(); builder.setCancelable(false);对话框抢到焦点
之后当我们点击其他区域或者点击返回键将没有效果,对话框成功的抢到焦点。这种方式我们可以使用在:当我们的应用程序
需要强制升级时,可以使用这种方式,当时用户的体验效果不是很好。
对话框使用的 常用方式。
当点击其他区域或者返回键,用户默认想法是取消这个对话框,所以需要让应用直接进入主页面。通过:
builder.setOnCancelListener(new OnCancelListener(){
public void onCancel(DialogInterface dialog){
enterHome();//进入主页面
dialog.dismiss();//取消对话框
}
});
/**
* 升级提示对话框
*/
private void showUpdateDialog() {
AlertDialog.Builder builder = new Builder(this);
builder.setTitle("升级提示");
builder.setMessage(description);
//builder.setCancelable(false);//抢夺焦点,强制更新,不建议使用
/**
* 返回键,点击其他区域-进入主页
*/
builder.setOnCancelListener(new OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
enterHome();
dialog.dismiss();
}
});