允许GridView单元格的高度扩展,但保持所有单元格的高度相同

时间:2013-06-12 09:44:56

标签: android gridview

在Android中,我有一个GridView,其中GridView中的每个“单元格”都有一个ImageView,而ImageView下面是TextView。对于所有细胞,细胞的宽度始终是固定的。图像大小固定,对所有单元格都相同。然而,文本的长度可以变化。当文本的长度比单元格的宽度宽时,文本会换行,单元格的高度应该会扩展,以保持整个文本的可见性。

我遇到的问题是我似乎无法让所有细胞的高度都相同。如果一个单元格的文本很少(没有包装)但与其相邻的单元格足以导致包装,则第一个单元格的高度比相邻单元格的高度短。如果细胞具有相同的高度并且textview的高度增长,那将是很好的。

这是我的GridView的xml:

<GridView
    android:id="@+id/gvDevices"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_above="@id/llToolbar"
    android:background="#000000"
    android:columnWidth="160dp"
    android:gravity="center_horizontal"
    android:horizontalSpacing="0dp"
    android:numColumns="2"
    android:stretchMode="columnWidth"
    android:verticalSpacing="5dp" >

这是每个单元格的xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/GridItem"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:background="@drawable/image_border"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="160dp"
        android:layout_height="120dp"
        android:gravity="center_horizontal|center_vertical" >

        <ImageView
            android:id="@+id/ivDevice"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >
        </ImageView>
    </LinearLayout>

    <TextView
        android:id="@+id/tvCaption"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:background="#707070"
        android:gravity="center_horizontal"
        android:text="Huawei, 2013-05-29 6:30 PM"
        android:textColor="#ffffff" >
    </TextView>

</LinearLayout>

修改 我遇到过这篇文章: How can I stretch the cells of the GridView vertically?

但解决方案不正确。我不想在TextView中使用固定数量的行。

2 个答案:

答案 0 :(得分:0)

最好的方法是将maxLines和minLines设置为相同的值。然后每个单元格将具有相同的高度:)                                  

答案 1 :(得分:-1)

就个人而言,当我想为Gridview项目保持相同的高度时,我为Child TextView设置Maxlines为1,并为子容器设置固定高度。

在你的例子中:

  • android:maxLines =“1”添加到tvCaption
  • android:minHeight =“X dip” android:layout_height =“X dip”添加到GridItem

用足够的值替换X.