Элементы будут отображаться в виде 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? Как я могу снова увеличить масштаб элементов?
До (макет кода):
After (xml layout):
введите описание изображения здесь