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

时间:2014-02-22 06:54:25

标签: android android-gridlayout

我正在尝试使用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>

谢谢,

Shmulik

1 个答案:

答案 0 :(得分: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的多余空间分布基于优先级而非权重。从其行和列组的对齐属性(通常通过设置子项的布局参数的gravity属性设置)推断子项的拉伸能力。如果沿给定轴定义对齐,则该组件在该方向上被视为柔性。如果未设置对齐,则假定组件不灵活。

     

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

     

要使柱伸展,请确保其中的所有组件都定义了重力。要防止色谱柱拉伸,请确保色谱柱中的某个组分未定义重力。

  

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