GridView.minHeight不适用于小项目计数

时间:2017-08-15 11:45:09

标签: java android gridview

我使用这个标记:

<GridView
        android:id="@+id/gvBlock0"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/solitude"
        android:gravity="center"
        android:minHeight="120dp"
        android:numColumns="2"
        android:stretchMode="columnWidth"
        tools:layout_height="120dp"
        tools:listitem="@layout/list_item_block"/>

如果我只有3个项目(每行40dp)我有2行和80dp高度。 如果我改变android:layout_height=120dp,我的预期高度为120dp。

但我只想使用minHeight。为什么它不起作用?

2 个答案:

答案 0 :(得分:1)

来自GridView source code,似乎它不支持minHeight属性。

您可以通过以下方式之一修复它:

1)创建扩展 MinHeightGridView的{​​{1}}自定义类,并通过添加以下覆盖代码来修复此问题,例如:

GridView

2)@Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); // After GridView measured everything, see if height needs update int desiredHeight = getMeasuredHeight(); desiredHeight = Math.max(desiredHeight, getSuggestedMinimumHeight()); setMeasuredDimension(getMeasuredWidth(), desiredHeight); } 封装在容器视图中 - 容器视图将包含GridView。确保在容器视图上根据需要设置背景和重力,例如:

minHeight

答案 1 :(得分:0)

尝试这样做。 将GridView保留在父级中,并将该父级的minHeight设置为&#34; 120dp&#34;。然后,内部GridView使用"match_parent"作为高度属性。