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