3

在 Android 中,我有一个 GridView,其中 GridView 中的每个“单元格”都有一个 ImageView,ImageView 下方有一个 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>

编辑 我遇到了这篇文章: 如何垂直拉伸 GridView 的单元格?

但解决方案不正确。我不希望 TextView 中有固定数量的行。

4

2 回答 2

0

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

于 2015-01-13T05:28:27.090 回答
-1

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

在你的例子中:

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

将 X 替换为足够的值。

于 2013-06-12T11:17:56.190 回答