Android 对话框 imageView 在启动时错位

Android Dialog imageView out of position at start up

目前,当按下某个项目时,会加载一个图像对话框。但是,每当 activity 首次启动时,加载的图像不在中心。它始终加载到屏幕的左上角 仅在首次按下该项目时

出于某种原因,当我按下之后的项目时,它会按照我的意愿完美地加载到中心。但是当我重新打开 activity 时,它又做了同样的事情。

有人知道发生了什么事吗?我的代码是:

 itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                final Dialog builder = new Dialog(getActivity());
                builder.requestWindowFeature(Window.FEATURE_NO_TITLE);
                builder.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
                ImageView imageView = new ImageView(getActivity());

                builder.addContentView(imageView, new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT));
                builder.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);

                Picasso.with(getActivity()).load("http://i.imgur.com/45oAm8N.jpg").into(imageView);
                //Glide.with(ChillFragment.this).load("http://i.imgur.com/bbTMZHD.jpg").into(imageView);

                mAttacher = new PhotoViewAttacher(imageView);
                mAttacher.setOnDoubleTapListener(new GestureDetector.OnDoubleTapListener() {
                    @Override
                    public boolean onSingleTapConfirmed(MotionEvent e) {
                        //Outside region
                        if (!mAttacher.getDisplayRect().contains(e.getX(), e.getY())) {
                            builder.dismiss();
                        }
                        return false;
                    }

                    @Override
                    public boolean onDoubleTap(MotionEvent e) {
                        return false;
                    }

                    @Override
                    public boolean onDoubleTapEvent(MotionEvent e) {
                        return false;
                    }
                });

                builder.show();

尝试更改为

 RelativeLayout.LayoutParams Params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
                Params.addRule(RelativeLayout.CENTER_IN_PARENT, RelativeLayout.TRUE);
                builder.addContentView(imageView, Params);
                builder.getWindow().setLayout(Params.width, Params.height);

尝试在构建器的程序中添加规则。您用于图像视图的布局参数还应该添加以下规则:

RelativeLayout.LayoutParams Params=new RelativeLayout.LayoutParams(View.WRAP_CONTENT,View.WRAP_CONTENT);
Params.addRule(RelativeLayout.CENTERINPARENT,View.TRUE);
imageView.setLayoutParams(Params);

你的问题是它将整个屏幕作为根布局,然后膨胀图像视图。尝试使用包装内容,然后添加规则

经过一整天的尝试,发现 PhotoView 库中存在错误。我所要做的就是从 ImageView 切换到 PhotoView。

https://github.com/chrisbanes/PhotoView/issues/320