为了账号安全,请及时绑定邮箱和手机立即绑定

Gridview高度被裁剪

Gridview高度被裁剪

Git
繁星coding 2019-07-27 15:15:22
Gridview高度被裁剪我试图在一个网格视图中显示8个项目。可悲的是,网格视图的高度总是太小,所以它只显示第一行,以及第二行的一小部分。设置android:layout_height="300dp"让它发挥作用。包裹content和fill_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>这个问题似乎与缺乏垂直空间无关。我能做什么?
查看完整描述

3 回答

?
MMMHUHU

TA贡献1834条经验 获得超8个赞

另一种对我有用的类似方法是计算一行的高度,然后使用静态数据(您可以将其调整为分页),您可以轻松地计算出有多少行并调整GridView高度的大小。

    private void resizeGridView(GridView gridView, int items, int columns) {
    ViewGroup.LayoutParams params = gridView.getLayoutParams();
    int oneRowHeight = gridView.getHeight();
    int rows = (int) (items / columns);
    params.height = oneRowHeight * rows;
    gridView.setLayoutParams(params);}

在设置适配器和绘制GridView之后使用此代码,否则将获得高度=0。

gridView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
            @Override
            public void onGlobalLayout() {
                if (!gridViewResized) {
                    gridViewResized = true;
                    resizeGridView(gridView, numItems, numColumns);
                }
            }
        });




查看完整回答
反对 回复 2019-07-28
  • 3 回答
  • 0 关注
  • 438 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信