Я использую пользовательский макет с пользовательским представлением. Макет - RelativeLayout
, а вид - ImageView
.
ImageView
масштабируется на основе наименьшей ширины или высоты экрана, чтобы сохранить соотношение изображения, которое я хочу отобразить, при этом показывая все изображение целиком.
Я не могу понять, как выровнять ImageView по центру по центру.
Это очень простой макет:
public class ImageViewLayout extends RelativeLayout {
public final CustomImageView mCustomImageView;
public ImageViewLayout(Context context) {
super(context);
mCustomImageView = new CustomImageView(context);
this.addView(mCustomImageView);
}
}
И ImageView (очень большой, но я постараюсь сохранить его для удобства чтения и при желании расширить):
public class CustomImageView extends ImageView implements GestureDetector.OnGestureListener {
public CustomImageView(Context context) {
super(context);
mContext = context;
init();
}
public init() {
setBackgroundColor(0xFF222222);
LayoutParams params = new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
setLayoutParams(params);
calculateAndDisplayBitmap();
}
}
Я рассчитываю размер изображения, которое я хочу отобразить после первоначального макета, и изображение всегда помещается в верхнем левом углу, независимо от того, какие уловки я пытаюсь сделать с макетом.
Фон растягивается, чтобы заполнить весь экран (FILL_PARENT
в параметрах предполагает, что он должен), но независимо от того, что я делаю с макетом, я не могу получить растровое изображение по центру.
Я действительно выбираю расположение растрового изображения на основе компоновки, а не на основе вычисленных пикселей.