android dialog.getWindow().setAttributes dialog背景是黑色的
时间: 2024-02-03 11:13:39 浏览: 182
如果你想改变Dialog的背景颜色,可以使用以下代码:
```
Dialog dialog = new Dialog(context);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.WHITE));
```
其中 `Color.WHITE` 可以改成你想要的背景颜色。如果你想让Dialog的背景透明,可以使用以下代码:
```
Dialog dialog = new Dialog(context);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
```
同样地,你也可以将 `Color.TRANSPARENT` 改成你想要的颜色。
相关问题
private void course_showDialog_1() { final androidx.appcompat.app.AlertDialog dialog = new androidx.appcompat.app.AlertDialog.Builder(this).create(); dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); dialog.show(); ColorDrawable drawable = new ColorDrawable(Color.TRANSPARENT); Window window = dialog.getWindow(); //背景全透明 window.setBackgroundDrawable(drawable); window.setDimAmount(1.5f); //弹出时状态栏颜色不改变 window.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND); window.setGravity(Gravity.CENTER); window.setContentView(R.layout.course); WindowManager.LayoutParams lp = window.getAttributes(); lp.width = WindowManager.LayoutParams.FILL_PARENT; lp.height = WindowManager.LayoutParams.FILL_PARENT; window.setAttributes(lp); textViewTime = window.findViewById(R.id.textViewTime24); mOffHandler = new Handler() { public void handleMessage(Message msg) { if (msg.what > 0) { // 动态显示倒计时 textViewTime.setText("(" + msg.what + ")"); } else { // 倒计时结束自动关闭 if (dialog != null) { dialog.dismiss(); } mOffTime.cancel(); } super.handleMessage(msg); } }; mOffTime = new Timer(true); TimerTask tt = new TimerTask() { public void run() { if (countTime > 0) { countTime--; } Message msg = new Message(); msg.what = countTime; mOffHandler.sendMessage(msg); } }; mOffTime.schedule(tt, 1000, 1000); }
这是一个 Android Studio 的代码段,它定义了一个名为 `course_showDialog_1()` 的方法。该方法创建了一个对话框,其中包括一个倒计时器和一个布局,该布局是通过 `R.layout.course` 引用的。对话框的背景是全透明的,而且它在屏幕中央显示。在 `mOffHandler` 和 `mOffTime` 中,定义了一个消息处理程序和一个计时器任务,用于更新倒计时器的文本。当倒计时结束时,对话框将自动关闭。
有没有什么可以替代Window window = getDialog().getWindow(); WindowManager.LayoutParams layoutParams = window.getAttributes(); window.setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG); window.setAttributes(layoutParams);
可以使用以下代码替代:
```
Window window = dialog.getWindow();
WindowManager.LayoutParams lp = window.getAttributes();
lp.type = WindowManager.LayoutParams.TYPE_APPLICATION_PANEL;
window.setAttributes(lp);
```
这里将 `TYPE_KEYGUARD_DIALOG` 替换为 `TYPE_APPLICATION_PANEL`,这样就可以实现相同的效果。
阅读全文