Подтвердить что ты не робот

Как центрировать макет вертикально в андроиде через java-код?

друзья

Я хочу установить android: layout_centerVertical = "true" свойство макета через java-код изображения.

Может ли кто-нибудь мне посоветовать, как этого добиться. вот мой код.

RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);

params.height = (int)totalHeight;

img.setLayoutParams(params);

Я попытался использовать setScaleType (ScaleType.FIT_CENTER), но не использовал.

любая помощь будет назначена.

4b9b3361

Ответ 1

Исправьте меня, если я ошибаюсь, но похоже, что вы пытаетесь установить выравнивание (или позиционную ориентацию) изображения внутри макета? Для этого вам необходимо установить свойство гравитации макета, содержащего выровненный вид.

    Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.icon);

    RelativeLayout layout = (RelativeLayout) findViewById(R.id.layout);
    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
            RelativeLayout.LayoutParams.FILL_PARENT, 
            RelativeLayout.LayoutParams.WRAP_CONTENT);

    ImageView imageView = new ImageView(this);
    imageView.setLayoutParams(params);
    imageView.setImageBitmap(bitmap);

    layout.setGravity(Gravity.CENTER_VERTICAL | Gravity.TOP);
    layout.addView(imageView);

В этом примере я программно добавляю изображение в RelativeLayout в свой ресурс макета, добавляя ImageView и выравнивая его так, чтобы оно было размещено в верхней, вертикальной центральной позиции.

Ответ 2

Попробуйте этот код.

RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams
          ((int) LayoutParams.WRAP_CONTENT, (int) LayoutParams.WRAP_CONTENT);

params.addRule(RelativeLayout.CENTER_VERTICAL);

img.setLayoutParams(params);

Ответ 3

В новом SDK нет Gravity.VERTICAL_CENTER, но, возможно, вы можете установить это с помощью layout.setGravity(Gravity.CENTER).