Activity设置主题背景后AlertDialog的背景随之改变的问题

最近做项目时,在启动页提示AlertDialog时,发现AlertDialog的背景随之改变的问题

参考:https://blog.csdn.net/Lindroid20/article/details/81148758

1、为了解决启动软件时,出现的黑屏或是白屏问题,需要在启动页面的activity修改它的theme主题样式

<style name="Launch" parent="Theme.AppCompat.NoActionBar">
    <item name="android:background">@drawable/start</item>
    <item name="android:windowFullscreen">true</item>
</style>
设置activity的android:theme="@style/Launch",重新启动软件,白屏或黑屏问题就解决了。

2、启动页若要显示错误信息之类的内容时,想要弹出dialog,发现dialog【系统自动的】背景和启动页面的背景一样。
这是怎么回事?如何解决?

因为设置主题背景后,AlertDialog的背景主题风格受到了启动页面的背景影响,一样了。

解决办法就是,重写AlertDialog的主题风格style

SplashErrorDialogTheme的主题风格:

<style name="SplashErrorDialogTheme" parent="Theme.AppCompat.Light.Dialog">
    <item name="android:windowFrame">@null</item>
    <item name="android:windowIsFloating">true</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:background">@null</item> 
</style>
代码如下

   public void showDialog(String message)
    {
      if (isShowErrorMessage)
        {
          android.app.AlertDialog.Builder builder = new android.app.AlertDialog.Builder(context, R.style.SplashErrorDialogTheme);
          builder.setTitle(cn.forestar.mapzone.constances.Constances.app_name);
          builder.setMessage(message);
          builder.setPositiveButton("确定", new DialogInterface.OnClickListener()
            {
              @Override
              public void onClick(DialogInterface dialog, int which)
                {
                  dialog.dismiss();
                  System.exit(1); // 杀死该应用进程
                  android.os.Process.killProcess(android.os.Process.myPid());
                }
            });
          android.app.AlertDialog dialog = builder.create();
          dialog.show();
          dialog.getButton(AlertDialog.BUTTON_POSITIVE).setBackgroundResource(R.drawable.dialog_btn_bg);
          dialog.getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(Color.BLACK);
        }
    }

}
3、注意:有时设置主题样式后,发现dialog还不起作用,这时候注意style的主题样式是否和项目的一致

比如,我的项目的主题样式是:Theme.AppCompat.NoActionBar ,我写dialog的style样式 时,不小心写成了

Animation.AppCompat.Dialog,怎么也不起作用,后来修改成这样了parent="Theme.AppCompat.Light.Dialog",就解决了。

 

希望我的分享能够帮助你解决你的问题。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值