在Android中,当您弹出一个对话框时,它背后的屏幕会变暗.有没有办法控制看起来像什么?例如,使它或多或少变暗或使用某种模式?
Ser*_*tov 41
是的.你可以控制它.
创建对话框后:
WindowManager.LayoutParams lp = dialog.getWindow().getAttributes();
lp.dimAmount=0.0f; // Dim level. 0.0 - no dim, 1.0 - completely opaque
dialog.getWindow().setAttributes(lp);
Run Code Online (Sandbox Code Playgroud)
更新:您甚至可以在对话框后添加模糊:
dialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND);
Run Code Online (Sandbox Code Playgroud)
此常量在API级别14中已弃用.
不再支持模糊.
小智 25
或者你可以这样做:
dialog.getWindow().setDimAmount(0.5f);
Run Code Online (Sandbox Code Playgroud)
小智 15
这个解决方案对我不起作用.还有另一种选择,您可以取消控制调光的标志.这段代码对我有用:
dialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
Run Code Online (Sandbox Code Playgroud)
Nam*_*wal 11
回答很晚但是我确信随着时间的推移,事情会被弃用,所以我的回答肯定会对某些人有所帮助.首先创建一个对话框:
dialog = new Dialog(ActivityName.this);
dialog .setCancelable(false);
dialog .setContentView(R.layout.dialog_layout);
Run Code Online (Sandbox Code Playgroud)
然后获取该对话框的窗口并添加一个名为FLAG_DIM_BEHIND的标志,最后在屏幕上设置昏暗量.
Window window = dialog.getWindow();
if(window != null){
window.addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND); // This flag is required to set otherwise the setDimAmount method will not show any effect
window.setDimAmount(0.5f); //0 for no dim to 1 for full dim
}
Run Code Online (Sandbox Code Playgroud)
然后显示你的对话框,
dialog.show();
Run Code Online (Sandbox Code Playgroud)
在您关闭对话框之前,请清除标记:
dialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
Run Code Online (Sandbox Code Playgroud)
然后解雇:
dialog.dismiss();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
25582 次 |
| 最近记录: |