使 ImageView 适合 Android GridLayout
Fit ImageViews into Android GridLayout
我需要将 4 张图像放入 GridLayout
。如果我用硬编码定义它们的尺寸。
例如
android:layout_width="150dp"
android:layout_height="200dp"
它工作正常。
但我的问题是,是否可以在不定义尺寸的情况下做到这一点?
同时我试过这个:
<GridLayout
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_margin="16dp"
android:columnCount="2"
android:orientation="horizontal"
android:useDefaultMargins="true"
app:layout_constraintTop_toBottomOf="@+id/top_object"
app:layout_constraintBottom_toTopOf="@+id/bottom_object"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/poster_21"
android:scaleType="centerCrop"/>
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/poster_22"
android:scaleType="centerCrop"/>
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/poster_23"
android:scaleType="centerCrop"/>
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/poster_24"
android:scaleType="centerCrop"/>
</GridLayout>
但在这种情况下,我左上方的图像占据了整个网格布局,另外 3 个图像具有相同的大小并且位于屏幕之外。
您可以为每个 GridLayout
元素使用 0dp
宽度和高度,即 ImageView
并使用列宽和行宽控制宽度和高度
<?xml version="1.0" encoding="utf-8"?>
<GridLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:grid="http://schemas.android.com/apk/tools"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_margin="16dp"
android:useDefaultMargins="true"
android:layout_constraintTop_toBottomOf="@+id/top_object"
android:layout_constraintBottom_toTopOf="@+id/bottom_object"
android:layout_constraintLeft_toLeftOf="parent"
android:layout_constraintRight_toRightOf="parent"
android:columnCount="2">
<ImageView
android:layout_width="0dp"
android:layout_height="0dp"
android:scaleType="centerCrop"
android:src="@drawable/poster_21"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
grid:layout_gravity="center" />
<ImageView
android:layout_width="0dp"
android:layout_height="0dp"
android:scaleType="centerCrop"
android:src="@drawable/poster_22"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
grid:layout_gravity="center" />
<ImageView
android:layout_width="0dp"
android:layout_height="0dp"
android:scaleType="centerCrop"
android:src="@drawable/poster_23"
android:text="item 0x2"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
grid:layout_gravity="center" />
<ImageView
android:layout_width="0dp"
android:layout_height="0dp"
android:scaleType="centerCrop"
android:src="@drawable/poster_24"
android:text="item 1x0"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
grid:layout_gravity="center" />
</GridLayout>
我需要将 4 张图像放入 GridLayout
。如果我用硬编码定义它们的尺寸。
例如
android:layout_width="150dp"
android:layout_height="200dp"
它工作正常。 但我的问题是,是否可以在不定义尺寸的情况下做到这一点? 同时我试过这个:
<GridLayout
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_margin="16dp"
android:columnCount="2"
android:orientation="horizontal"
android:useDefaultMargins="true"
app:layout_constraintTop_toBottomOf="@+id/top_object"
app:layout_constraintBottom_toTopOf="@+id/bottom_object"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/poster_21"
android:scaleType="centerCrop"/>
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/poster_22"
android:scaleType="centerCrop"/>
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/poster_23"
android:scaleType="centerCrop"/>
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/poster_24"
android:scaleType="centerCrop"/>
</GridLayout>
但在这种情况下,我左上方的图像占据了整个网格布局,另外 3 个图像具有相同的大小并且位于屏幕之外。
您可以为每个 GridLayout
元素使用 0dp
宽度和高度,即 ImageView
并使用列宽和行宽控制宽度和高度
<?xml version="1.0" encoding="utf-8"?>
<GridLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:grid="http://schemas.android.com/apk/tools"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_margin="16dp"
android:useDefaultMargins="true"
android:layout_constraintTop_toBottomOf="@+id/top_object"
android:layout_constraintBottom_toTopOf="@+id/bottom_object"
android:layout_constraintLeft_toLeftOf="parent"
android:layout_constraintRight_toRightOf="parent"
android:columnCount="2">
<ImageView
android:layout_width="0dp"
android:layout_height="0dp"
android:scaleType="centerCrop"
android:src="@drawable/poster_21"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
grid:layout_gravity="center" />
<ImageView
android:layout_width="0dp"
android:layout_height="0dp"
android:scaleType="centerCrop"
android:src="@drawable/poster_22"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
grid:layout_gravity="center" />
<ImageView
android:layout_width="0dp"
android:layout_height="0dp"
android:scaleType="centerCrop"
android:src="@drawable/poster_23"
android:text="item 0x2"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
grid:layout_gravity="center" />
<ImageView
android:layout_width="0dp"
android:layout_height="0dp"
android:scaleType="centerCrop"
android:src="@drawable/poster_24"
android:text="item 1x0"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
grid:layout_gravity="center" />
</GridLayout>