Android 如何防止GridLayout中的单元格拉伸?

Android 如何防止GridLayout中的单元格拉伸?,android,android-gridlayout,Android,Android Gridlayout,我正在尝试使用GridLayout以不均匀的大小布局一些图像(我正在尝试实现交错EdGrid) ),但当我将第一个图像放在第一个单元格中时,它会在整个屏幕上延伸 我如何防止它这样做 <?xml version="1.0" encoding="UTF-8"?> <GridLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.c

我正在尝试使用GridLayout以不均匀的大小布局一些图像(我正在尝试实现交错EdGrid) ),但当我将第一个图像放在第一个单元格中时,它会在整个屏幕上延伸

我如何防止它这样做

<?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>

谢谢


Shmulik

请使用layout_列和layout_行指定要将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>

同时阅读文档,我发现我们可以通过重力来控制拉伸。上面说,

多余空间分布

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

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

若要拉伸柱,请确保柱内的所有组件都定义了重力。要防止柱拉伸,请确保柱中的一个构件未定义重力

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


感谢您的回复,但它仍然覆盖整个屏幕。您还必须将ImageView的布局宽度和布局高度指定为包裹内容或所需大小。并检查图像的大小。使它们足够小,你需要出现,但这样我就失去了使用网格的概念。。。那么为什么不直接使用RelativeLayout呢?有没有一种方法可以将屏幕分割成不同大小的几块,并在每一块中放入一个图像,以便将比率保存在不同的设备上?您能否确认您的图像不够大,无法占据屏幕,因为使用GridLayout,我们只给出行和列,但不对其进行任何限制。因此,如果图像非常大,它将扩散到它的大小。请编辑我的。也看看-