【问题标题】:Dialog: dim everything except some region对话框:调暗除某些区域外的所有内容
【发布时间】:2017-07-15 12:54:53
【问题描述】:

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

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();

所以我想要实现的是禁用按钮的调光,它在对话框后面可见。

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

【问题讨论】:

  • 你可以清除Dialog后面的Dim背景...可以吗?
  • 您可能的意思是:clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHI‌​ND)。但它会消除整个背景的变暗。我只想要它的按钮。你可以在我的帖子中看到它。

标签: android android-layout android-view android-dialog android-window


【解决方案1】:

这可能吗,还是我只能移除整个背景的调光?

不可能指示Dialog 调暗除某些视图或某些区域之外的所有内容。没有这样的 API 可以做到这一点。

您可以做的是提供您的自定义可绘制对象作为Dialog 窗口的背景。该drawable将被赋予Rect,坐标为Button和屏幕的Rect。它会在除提供的矩形之外的所有地方绘制暗淡(基本上是半透明的黑色)。看起来xfermode SrcOut 是应该应用的模式。

【讨论】:

    猜你喜欢
    • 2021-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-21
    • 1970-01-01
    • 2015-06-22
    • 2012-11-04
    • 1970-01-01
    相关资源
    最近更新 更多