Android 对话框:除某个区域外,将所有对象均暗显

Android 对话框:除某个区域外,将所有对象均暗显,android,android-layout,android-view,android-dialog,android-window,Android,Android Layout,Android View,Android Dialog,Android Window,在我的应用程序中,我在对话框中显示一个图像。如果用户按下按钮,则会出现对话框,占据整个屏幕的80%。背景将变暗,因为这是Android对话框的默认行为 Dialog dialog = new Dialog(ActQuiz.this); dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); dialog.getWindow().setBackgroundDrawable(new C

在我的应用程序中,我在对话框中显示一个图像。如果用户按下按钮,则会出现对话框,占据整个屏幕的80%。背景将变暗,因为这是Android对话框的默认行为

Dialog dialog = new Dialog(ActQuiz.this);
                dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
                dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
                dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
                    @Override
                    public void onDismiss(DialogInterface dialogInterface) {
                        //nothing;
                    }
                });

                int width = (int) (getResources().getDisplayMetrics().widthPixels * 0.80);
                int height = (int) (getResources().getDisplayMetrics().heightPixels * 0.80);
                dialog.getWindow().setLayout(width, height);
                ImageView imageView = new ImageView(ActQuiz.this);
                String uri = "@drawable/" + info.getInfopicture();
                int imageResource = getResources().getIdentifier(uri, null, getPackageName());
                Drawable myDrawable = ContextCompat.getDrawable(ActQuiz.this, imageResource);
                imageView.setImageDrawable(myDrawable);
                new PhotoViewAttacher(imageView);
                dialog.addContentView(imageView, new RelativeLayout.LayoutParams(width, height));
                dialog.show();
因此,我想要实现的是禁用按钮的调光,该按钮在对话框后面可见

这是可能的还是我只能删除整个背景的调光

这是可能的还是我只能删除整个背景的调光

无法指示
对话框
将除某个视图或某个区域外的所有内容都调暗。没有这样的API可以做到这一点


您可以做的是,为
对话框的窗口提供自定义可绘制的背景。该可绘制图形将被赋予一个
Rect
,其坐标为
按钮
和屏幕的
Rect
。除了提供的矩形外,它将在任何地方绘制暗淡(基本上是半透明的黑色)。看起来是应该应用的模式。

您可以清除对话框后面的暗背景…可以吗?您可能是指:clearFlags(WindowManager.LayoutParams.FLAG\u Dim\u BEHI‌​ND)。但它将消除整个背景的调光。我只想按一下按钮。您可以在我的帖子中看到。您可以查看: