Gridview高度被裁剪

Gridview高度被裁剪

我试图在一个网格视图中显示8个项目。可悲的是,网格视图的高度总是太小,所以它只显示第一行,以及第二行的一小部分。

设置android:layout_height="300dp"让它发挥作用。包裹contentfill_parent显然不是。

我的网格视图:

<GridView
    android:id="@+id/myId"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:horizontalSpacing="2dp"
    android:isScrollContainer="false"
    android:numColumns="4"
    android:stretchMode="columnWidth"
    android:verticalSpacing="20dp" />

我的物品资源:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:minHeight="?android:attr/listPreferredItemHeight" >

    <ImageView
        android:id="@+id/appItemIcon"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:src="@android:drawable/ic_dialog_info"
        android:scaleType="center" />      

    <TextView
        android:id="@+id/appItemText"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="My long application name"
        android:gravity="center_horizontal"
        android:textAppearance="?android:attr/textAppearanceSmall" /></LinearLayout>

这个问题似乎与缺乏垂直空间无关。

我能做什么?



繁星coding
浏览 439回答 3
3回答

MMMHUHU

另一种对我有用的类似方法是计算一行的高度,然后使用静态数据(您可以将其调整为分页),您可以轻松地计算出有多少行并调整GridView高度的大小。&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;void&nbsp;resizeGridView(GridView&nbsp;gridView,&nbsp;int&nbsp;items,&nbsp;int&nbsp;columns)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;ViewGroup.LayoutParams&nbsp;params&nbsp;=&nbsp;gridView.getLayoutParams(); &nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;oneRowHeight&nbsp;=&nbsp;gridView.getHeight(); &nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;rows&nbsp;=&nbsp;(int)&nbsp;(items&nbsp;/&nbsp;columns); &nbsp;&nbsp;&nbsp;&nbsp;params.height&nbsp;=&nbsp;oneRowHeight&nbsp;*&nbsp;rows; &nbsp;&nbsp;&nbsp;&nbsp;gridView.setLayoutParams(params);}在设置适配器和绘制GridView之后使用此代码,否则将获得高度=0。gridView.getViewTreeObserver().addOnGlobalLayoutListener(new&nbsp;ViewTreeObserver.OnGlobalLayoutListener()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@Override &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;void&nbsp;onGlobalLayout()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!gridViewResized)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gridViewResized&nbsp;=&nbsp;true; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;resizeGridView(gridView,&nbsp;numItems,&nbsp;numColumns); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});
打开App,查看更多内容
随时随地看视频慕课网APP