滚动

时间:2015-04-23 08:42:01

标签: android gridview android-gridview

我正在开发包含许多图像的Android GridView。 滚动到列表底部后向上滚动时,列表的列不再是直线。

屏幕截图:

enter image description here enter image description here

更奇怪的是,即使使用相同的适配器和GridView,反应也不会出现在另一个列表中(截屏的残奥表中)。但其他页面的项目较少。所以我认为是否计算项目的差异。 (只是我的猜测)问题列表中有40个项目。

代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="5dp"
    android:background="@color/white">

    <GridView
        android:id="@+id/sports_gridView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_margin="4dp"
        android:columnWidth="80dp"
        android:gravity="center"
        android:numColumns="auto_fit"
        android:stretchMode="columnWidth"/>

</LinearLayout>

适配器

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:paddingLeft="5dp"
    android:paddingRight="5dp"
    android:paddingTop="10dp"
    android:paddingBottom="20dp"
    android:background="@color/white">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <ImageView
            android:id="@+id/sports_iv_item_icon"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:layout_marginRight="10dp"
            android:layout_centerHorizontal="true"/>

    </RelativeLayout>


    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <TextView
            android:id="@+id/sports_tv_item_title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="5dp"
            android:gravity="center"
            android:textSize="12dp"
            android:textColor="@color/black"
            android:layout_centerHorizontal="true"/>

    </RelativeLayout>


</LinearLayout>

为什么会出现这种现象?我该如何解决?

全部谢谢:)

1 个答案:

答案 0 :(得分:1)

GridView并不真正支持不同高度的项目,因此您可以执行以下操作:

  • 让你所有的物品都高度相同:在这种情况下它是相当的 简单的说,将android:lines =“2”添加到sports_tv_item_title,以便全部使用 你的头衔2行高。
  • 使用自定义Android交错网格视图,例如https://github.com/etsy/AndroidStaggeredGrid(谷歌的第一击)
  • 我相信带有StaggeredLayoutManager的RecyclerView可以做到 同样适合你。