2

我正在尝试使用 GridLayout 布局一些尺寸不均匀的图像(我正在尝试实现 StaggeredGrid ),但是当我将第一个图像放在第一个单元格中时,它会在整个屏幕上延伸。

我如何防止它这样做?

<?xml version="1.0" encoding="UTF-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:columnCount="4"
   android:rowCount="4"
   tools:context=".MainActivity" >

<ImageView
    android:layout_columnSpan="1"
    android:layout_rowSpan="2"
    android:src="@drawable/pic1" />

<ImageView
    android:layout_columnSpan="2"
    android:layout_rowSpan="1"
    android:src="@drawable/pic2" />

</GridLayout>

谢谢,

什穆利克

4

1 回答 1

0

请使用 layout_column 和 layout_row 指定要放置 ImageView 的行和该行的哪一列。

<?xml version="1.0" encoding="UTF-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:columnCount="4"
    android:rowCount="4"
    tools:context=".MainActivity" >

 <ImageView
   android:layout_column="1"
   android:layout_row="0"
   android:src="@drawable/pic1" />

 <ImageView
   android:layout_column="2"
   android:layout_row="0"
   android:src="@drawable/pic2" />

</GridLayout>

还阅读了文档,我发现我们可以使用 Gravity 控制拉伸。它说,

多余空间分布

GridLayout 对多余空间的分配是基于优先级而不是权重。孩子的拉伸能力是从其行和列组的对齐属性推断出来的(通常通过设置孩子的布局参数的重力属性来设置)。如果沿给定轴定义对齐,则组件在该方向上被视为灵活。如果没有设置对齐,则假定组件是不灵活的。

同一行或列组中的多个组件被视为并行操作。只有当其中的所有组件都是灵活的时,这样的组才是灵活的。相反,位于公共边界两侧的行组和列组被视为串联。如果其中一个元素是灵活的,则由这两个元素组成的复合组是灵活的。

要使柱子伸展,请确保其中的所有组件都定义了重力。要防止柱子拉伸,请确保柱子中的一个组件没有定义重力。

在单元组中的组件周围放置等量的空间;使用CENTER对齐(或重力)。用于完全控制行或列中多余的空间分布;使用LinearLayout子视图来保存相关单元组中的组件。当使用这些技术中的任何一种时,请记住,单元组可能被定义为重叠。

于 2014-02-22T06:59:49.480 回答