【问题标题】:Allow GridView cell's height to expand but maintain same height for all cells允许 GridView 单元格的高度扩展,但所有单元格保持相同的高度
【发布时间】:2013-06-08 09:07:44
【问题描述】:

在 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>

编辑 我偶然发现了这个帖子: How can I stretch the cells of the GridView vertically?

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

【问题讨论】:

    标签: android gridview


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      在你的例子中:

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

      将 X 替换为足够的值。

      【讨论】:

      • 但这不允许高度随着文本的增加而拉伸,这是我所要求的。
      • 只需为网格项设置一个固定高度
      • -1:它不能解决问题。设置固定高度绝对不是一个好主意,我们希望根据其内容适当地调整我们的视图。
      • @AndroidDev 要求固定大小,所以我已经准确回答了他需要什么。如果您的要求不同,请不要投票。其他人可能需要它。
      • "文本的长度可能不同" => 它根本不是固定的大小!所有单元格的高度必须相同,但它是取决于内容的动态高度。因此,毫无疑问,它没有回答这个问题。此外,当我必须维护它时,我希望看到编写良好的代码,所以我对根本不灵活的答案投了反对票。从我的角度来看,你正在做的事情是一种非常糟糕的做法。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-20
      • 2022-10-16
      • 1970-01-01
      • 1970-01-01
      • 2012-11-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多