Диалог: затемнить все, кроме какого-то региона

В моем приложении я показываю изображение в диалоге. Если пользователь нажимает кнопку, появляется диалоговое окно и занимает 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();

Поэтому я хочу отключить затемнение для кнопки, которая видна за диалогом.

введите описание изображения здесь

Это возможно, или я могу удалить только затемнение для всего фона?

1 ответ

Это возможно, или я могу удалить только затемнение для всего фона?

Невозможно инструктировать Dialog затемнить все, кроме какого-либо вида или региона. Нет такого API для этого.

Что вы можете сделать, так это предоставить свой собственный рисунок в качестве фона для Dialogокно. Это рисование будет дано Rect с координатами Button и Rect экрана. Он будет рисовать тусклым (в основном полупрозрачный черный цвет) везде, кроме предоставленного прямоугольника. Похоже, xfermode SrcOut - это режим, который следует применять.

Другие вопросы по тегам