xml макет заметно отличается от макета, сгенерированного кодом - PullRequest
0 голосов
/ 02 августа 2020

Элементы будут отображаться в виде GridView:

<GridView
    android:id="@+id/month_list"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingLeft="@dimen/activity_half_horizontal_margin"
    android:paddingRight="@dimen/activity_half_horizontal_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:stretchMode="columnWidth"
    android:horizontalSpacing="4dp"
    android:verticalSpacing="4dp"/>

Макет для элементов, которые раньше создавались в коде:

private LinearLayout getMonthImageView() {
    LinearLayout layout = new LinearLayout(context);
    layout.setOrientation(LinearLayout.VERTICAL);

    TextView text = new TextView(context);
    text.setGravity(Gravity.CENTER);
    text.setSingleLine();
    layout.addView(text, 0);

    ImageView image = new ImageView(context);
    image.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
    image.setAdjustViewBounds(true);
    layout.addView(image, 1);

    return layout;
}

Я переделал эту часть на взяты из файла макета xml:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/month_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:singleLine="true"/>

    <ImageView
        android:id="@+id/month_icon"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scaleType="centerInside"
        android:adjustViewBounds="true"/>

</LinearLayout>

Это имело нежелательный видимый эффект: разрыв между элементами в GridView увеличился, как если бы элементы приобрели некоторые отступы или поля (что явно не так). Это почему? В чем разница между элементами, создаваемыми в коде, и элементами, полученными из файла макета xml? Как я могу снова увеличить масштаб элементов?

До (макет кода): enter image description here

After (xml layout): введите описание изображения здесь

1 Ответ

0 голосов
/ 02 августа 2020

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

  1. Если вы надуваете LinearLayout, вам, вероятно, следует избегать android:layout_height="match_parent", потому что он занимает максимум места (обычно весь экран) даже если он вам может не понадобиться.

  2. Я думаю, что ImageView, вероятно, не должно быть равно родительскому, но иметь определенный размер. Таким образом, он также занимает максимум места в родительском элементе, который может ему не понадобиться.

Мой совет: попробуйте RelativeLayout с android:layout_width="match_parent" и android:layout_height="wrap_content .

Затем используйте разные параметры layout_align, чтобы выровнять все наверху, и укажите некоторые c размеры для вашего ImageView.

Это только мое предположение, но я могу ошибаться .

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