В настоящее время диалог изображения загружается при нажатии на элемент. Однако всякий раз, когда активность начинается, загруженное изображение не находится в центре. Он всегда загружается в верхний левый угол экрана только во время первого нажатия.Диалоговое окно Android Диалоговое окно при запуске
По какой-то причине, когда я подавляю предметы после этого, он идеально подходит в центре, как я хотел. Но когда я снова открываю деятельность, он делает то же самое снова.
Кто-нибудь знает, что происходит? Мой код:
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);
По какой-то причине, когда при проверке значения для WindowManager.LayoutParams LP = новые WindowManager.LayoutParams(); lp.height и lp.width равно -1! – Petersicecream