我们正在编写一个针对ICS +的应用,并认为GridLayout是最好的布局范例,但似乎很少有关于它的文章,我们遇到了一些对齐问题。
<GridLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/row_background"
android:rowCount="1"
android:columnCount="3"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:useDefaultMargins="true"
android:background="@drawable/list_item_bg">
<ImageView
android:id="@+id/visibilityIcon"
android:layout_row="0"
android:layout_column="0"
android:src="@drawable/visibility_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"/>
<ImageView
android:id="@+id/windIcon"
android:layout_row="0"
android:layout_column="1"
android:src="@drawable/wind_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"/>
<ImageView
android:id="@+id/crosswindIcon"
android:layout_row="0"
android:layout_column="2"
android:src="@drawable/cloud_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"/>
</GridLayout>
但是,左侧2个图标保持左对齐,最右侧图标以剩余空间居中。
基本上我们需要做的是将每列的大小指定为总屏幕大小的1/3(自3列)。我认为这就是GridLayout所做的,但看起来'wrap_content'会导致这种行为(有意义),但'match_parent'会导致第一列填满整个屏幕,而不是填充其单元格,这是我预期的行为。
我们似乎已尝试过引力,layout_gravity等的所有组合,但要么我们从根本上做错了什么,要么发现了GridLayout的限制。
感谢您的帮助!
答案 0 :(得分:8)
只允许一行和一列在GridLayout中生长,即沿着该轴具有重力的那一行。如果多个行或列指定重力,则只有一个会得到它(如果我记得它是“最后一个”)。选择其他布局或编写自己的布局。如果您只想要一个具有相同分割图标的行,则可以使用LinearLayout,其中组件的宽度为0px且权重都相同,例如1。