Как по центру выровнять мой вид в пользовательском макете? - PullRequest
0 голосов
/ 28 февраля 2012

Я использую пользовательский макет с пользовательским представлением. Макет - 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 в параметрах предполагает, что он должен), но независимо от того, что я делаю с макетом, я не могу получить растровое изображение по центру.

Я действительно выбираю расположение растрового изображения на основе компоновки, а не на основе вычисленных пикселей.

1 Ответ

0 голосов
/ 28 февраля 2012

Добавьте эту строку в ImageViewLayout.java

mCustomImageView.setGravity(Gravity.CENTER);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...