Android Dialog imageView在启动时不在适当位置

时间:2016-05-15 03:20:06

标签: android dialog imageview picasso android-glide

当前按下某个项目时会加载图像对话框。但是,无论何时首次启动活动,加载的图像都不在中心。在首次按下项目时,它始终会加载到屏幕的左上角

出于某种原因,当我压制物品后,它会在我想要的地方完美地装入中心。但是当我重新开启活动时,它再次做同样的事情。

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

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

enter image description here

尝试改为

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

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

经过一整天的尝试后,原来是PhotoView库中的一个错误。我所要做的就是从ImageView切换到PhotoView。

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

相关问题