AlertDialog的暗淡效果可以通过以下方式禁用:

alertDialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);


另外,可以使用以下方式更改暗淡量:

 alertDialog.getWindow().setDimAmount(0.0f);


但是,每当我调用这些函数时,更改似乎就会在较短的时间内(100-200之间的较长值)被激活。有没有办法使更改立即生效?

当尝试用模仿的View替换标准的暗淡时,由于暗淡变化的动画,屏幕似乎闪烁。

编辑:这是基本的应用程序主题:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>


AlertDialog是从AlertDialog.Builder创建的(单击侦听器已在以后添加):

    dialogBuilder=new AlertDialog.Builder(this);
    dialogBuilder.setTitle("Title").setIcon(null).setMessage("Description")
            .setNeutralButton("Neutral",null).setNegativeButton("Cancel",null).setPositiveButton("Ok",null);
    alertDialog=dialogBuilder.create();

最佳答案

将此添加到您的主题:

        <item name="android:backgroundDimEnabled">false</item>


并严格从代码控制主题

如果您不想通过主主题来控制对话框的主题
仅为对话框创建一个子类,并按以下方式使用它

<style name="DialogTheme" parent="Theme.MaterialComponents.Light.NoActionBar.Bridge">
     <item name="android:backgroundDimEnabled">false</item>
</style>


dialogBuilder = new AlertDialog.Builder(this, R.style.DialogTheme);

07-27 13:31