您是否注意到 Android OS 11(API 30)的任何 UI 问题。我有一个全屏透明对话框,中间有一个进度条,它一直工作到 Android 10,不知道它在 Android 11 中显示黑色背景。如果你们对这个问题有任何想法,请分享。
这就是我设置对话框背景透明的方式:
getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
您是否注意到 Android OS 11(API 30)的任何 UI 问题。我有一个全屏透明对话框,中间有一个进度条,它一直工作到 Android 10,不知道它在 Android 11 中显示黑色背景。如果你们对这个问题有任何想法,请分享。
这就是我设置对话框背景透明的方式:
getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
为同样的问题而苦苦挣扎,让我找到了这个解决方案;
Window window = dialog.getWindow();
window.setBackgroundDrawable(new ColorDrawable(Color.argb(58, 0, 0, 0)));
dialog.requestWindowFeature(1);
dialog.setContentView(R.layout.dialog_layout);//Set contentView after setting background drawable
dialog.show();
很简单,在设置背景可绘制后设置 contentView 解决了这个问题。可能还有其他一些方法,例如将背景设置为资源。这是适合我的。
没有更多细节,我只能猜测解决方案。但我相信这是一个LayoutParams
正在被取代的问题。相反,我建议修改LayoutParams
已有的视图/窗口。
获取布局参数:
WindowManager.LayoutParams params = window.attributes;
根据需要修改属性,例如params.width = WRAP_CONTENT
然后设置修改后的布局参数:
window.attributes = params
我向所有人推荐这个解决方案LayoutParams
,它通常为更多的 android 版本提供最佳解决方案。并且必须设置较少的属性。
好吧,setBackgroundDrawable()
现在已弃用,这可能就是您遇到此问题的原因。另一种方法是setBackgroundResource(R.drawable.your_drawable)
您可以用您的颜色替换可绘制对象。