我正在尝试使用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
答案 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
子视图来保存关联单元格组中的组件。使用这些技术时,请记住可以将单元格组定义为重叠。