【问题标题】:Making a GridView that wraps its height and width according to the data inside根据里面的数据制作一个包裹其高度和宽度的GridView
【发布时间】:2017-12-12 20:33:54
【问题描述】:

我正在尝试创建一个 gridview,它根据每个单元格中的 ImageView 宽度和高度调整其宽度和高度。我的脚本似乎并没有那样工作。我无法弄清楚我做错了什么。我附上了我正在尝试做的示例图像。这些屏幕截图取自 google play store 上的应用程序。

这是我的 .xml 文件,其中包含将填充数据的 GridView

<RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">

        <TextView
            android:id="@+id/text_view_client_newsfeed_xml"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:layout_margin="20dp"
            android:layout_centerInParent="true"
            android:text="NO ITEM ADDED YET USE DETAIL BUTTON TO GO FURTHER"
            android:textColor="#FFFFFF"/>
        <GridView
            android:id="@+id/list_view_client_newsfeed_xml"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_margin="10dp"
            android:numColumns="auto_fit"
            >

        </GridView>
        
       </RelativeLayout>

这是我的适配器类的 getView 方法,它下载图像并将其填充到 gridView 中。我正在使用毕加索从服务器下载图像。 `

 @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        ViewHolderClientNewsFeed holder;
        if (null == convertView) {

            holder = new ViewHolderClientNewsFeed();
            convertView = inflater.inflate(R.layout.grid_view_images_client_newsfeed, parent, false);
            holder.newsfeedImage = (ImageView) convertView.findViewById(R.id.imageView_clientNewaFeed);
            convertView.setTag(holder);
        }
        else
        {
            holder = (ViewHolderClientNewsFeed) convertView.getTag();
        }

        Picasso.with(context)
            .load(imageUrls.get(position))
            .fit()
            .into(holder.newsfeedImage);

        return convertView;
    }

` 这是我的新闻源列表行布局。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ImageView
        android:id="@+id/imageView_clientNewaFeed"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</LinearLayout>

有人可以指出我做错了什么。我想在插入的图像中实现一些东西。

【问题讨论】:

  • 你给你的图像视图提供了固定的宽度和高度,这不会改变你对网格所做的任何事情,哪个部分应该是动态的“换行”?
  • 是的,我明白了你的意思,我已经编辑过了。我还尝试在运行时在我的 gridview 中使用的 ImageView 中使用 wrap_content。但是 gridView 单元格似乎没有根据里面的图像调整宽度和高度。无论在运行时下载什么大小的图像,它们都是相同的。我希望我的 girdview 单元将自己调整为其中的大小图像
  • 您想要调整单元格,还是调整整个网格?你的网格有 match_parent,所以它不会变小或变大。请显示错误布局的屏幕截图
  • 我希望单元格进行相应的调整。我想做一个像上图那样的菜单。
  • 您希望单元格填充宽度,但不是吗?有空格吗?你很难使用想象力:D

标签: android android-layout android-gridview


【解决方案1】:

如果您的图片没有填满视图的宽度,那是因为它们基本上小于您的手机/平板电脑宽度。

您基本上需要更改ImageViewscaleType

使用FIT_XY 可以解决问题,但可能会拉伸您的图像,您也可以尝试CENTER_CROPCENTER_INSIDEFIT_CENTER

您可能需要在 ImageViews 上将 android:adjustViewBounds 设置为 true

【讨论】:

  • 感谢您的建议,它确实有助于填补空白。
【解决方案2】:

如果您尝试将视图创建为交错网格视图, 你可以在谷歌上搜索交错网格布局 here 是我发现的。

【讨论】:

  • 这个GridView看起来不错,我一定会看看这个,非常感谢分享
猜你喜欢
  • 2015-10-31
  • 1970-01-01
  • 2015-06-16
  • 2013-03-10
  • 1970-01-01
  • 2019-06-09
  • 1970-01-01
  • 2018-06-09
  • 1970-01-01
相关资源
最近更新 更多