GridView - 有时行是顶部对齐的,有时它们是底部对齐的!

use*_*701 24 android

我正在使用GridView.一列中的四个项目.每个元素由以下布局组成:

<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:orientation="vertical">

  <ImageView
    android:layout_width="32dip"
    android:layout_height="32dip"/>

  <TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="11dip"
    android:paddingTop="2dip" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

所以每个元素都是一个小图像,下面有一些文字.布局在第一次通过时效果很好.但是,如果项目的文本很长,它会换行到两行.这可以正常工作,直到您将其滚入和移出视图.默认情况下,一行中的所有图像都是顶部对齐的.当您在屏幕外滚动一行,然后返回屏幕时,您会看到该行以某种方式得到底部对齐.看起来像:

第一个布局:

[image]   [image]   [image]  
[text]    [text]    [text
                     wrap]
Run Code Online (Sandbox Code Playgroud)

所以尽管第三个元素有两行文字,但顶部是对齐的,这是完美的.如果我在屏幕上滚动此行,然后重新打开,它看起来像这样:

                    [image]
[image]   [image]   [text
[text]    [text]     wrap]
Run Code Online (Sandbox Code Playgroud)

所以这行在底部对齐.我不确定这是否是GridView中的错误,或者是否有某种方法可以控制布局以始终对齐行.我已经尝试将元素布局的重力设置为"顶部",没有好处.似乎GridView也没有任何独特的设置来控制它.有任何想法吗?

谢谢

tas*_*iac 14

GridView中项目的高度必须相同.您有2或3个选项.

  1. 给TextView一个高度
  2. 使用TextView单行 android:singleLine="true"
  3. 如果某些项目中必须有2行,则使所有项目都有2行.你可以做到这一点android:minLines="2"


Com*_*are 0

尝试android:layout_gravity="top"在你的LinearLayout.

另外,如果您手动扩展单元格的布局,请务必使用将inflate()用作GridView第二个参数并使用 false 作为第三个参数的版本。

  • 好的。现在我只是设置textview::lines=2。这使每个元素具有相同的高度并且似乎有效。 (4认同)