最近做项目时,在启动页提示AlertDialog时,发现AlertDialog的背景随之改变的问题
参考:https://blog.youkuaiyun.com/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",就解决了。
希望我的分享能够帮助你解决你的问题。