android – Gridview只返回一行

android – Gridview只返回一行,第1张

概述我在相对布局中使用GridView.我希望GridView显示 显示所有行所需的高度.但是,我只是看到了 设置时一行(layout_width = MATCH_PARENT和) layout_height = WRAP_CONTENT.如果我将layout_height设置为一个大小 等于多行,然后我看到那些行. <?xml version="1.0" encoding="utf-8"?><Re 我在相对布局中使用GrIDVIEw.我希望GrIDVIEw显示
显示所有行所需的高度.但是,我只是看到了
设置时一行(layout_wIDth = MATCH_PARENT和)
layout_height = WRAP_CONTENT.如果我将layout_height设置为一个大小
等于多行,然后我看到那些行.
<?xml version="1.0" enCoding="utf-8"?><relativeLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"androID:layout_wIDth="fill_parent"androID:layout_height="fill_parent"androID:gravity="center"><relativeLayout    androID:ID="@+ID/layout_month"    androID:layout_wIDth="fill_parent"    androID:layout_height="fill_parent"     >    <TextVIEw        androID:ID="@+ID/textv_month_name"        androID:layout_wIDth="fill_parent"        androID:layout_height="wrap_content"        androID:clickable="false"        androID:gravity="center_horizontal|center_horizontal"        androID:textcolor="#ffffff"        androID:textSize="7dp" />    <ImageVIEw        androID:ID="@+ID/top_bar"        androID:layout_wIDth="fill_parent"        androID:layout_height="15dp"        androID:layout_below="@+ID/textv_month_name"        androID:background="@drawable/calendar_top_small"        androID:clickable="false" />    <GrIDVIEw        androID:ID="@+ID/grIDv_inner"        androID:layout_wIDth="fill_parent"        androID:layout_height="wrap_content"        androID:layout_below="@+ID/top_bar"        androID:layout_gravity="center"        androID:clickable="false"        androID:gravity="center"        androID:numColumns="7"        androID:stretchMode="columnWIDth"         >    </GrIDVIEw>    <button        androID:ID="@+ID/monthBtn"        androID:layout_wIDth="fill_parent"        androID:layout_height="fill_parent"        androID:background="@androID:color/transparent" /></relativeLayout></relativeLayout>

任何帮助都会很明显

解决方法 这是一个非常有用的答案.

当GrIDVIEw放在一个垂直狭窄的空间时,它不喜欢它的高度的wrap_content;它只显示了一行项目(滚动该行中的所有内容).

我的修复程序的简短版本包括对GrIDVIEw进行子类化并覆盖onMeasure方法.修复的本质集中在将测量的高度规格设置为可笑的大数字.

MyGrIDvIEw.Java

package com.arun.calendar;   import androID.content.Context;   import androID.util.AttributeSet;   import androID.Widget.GrIDVIEw;   public class MyGrIDVIEw extends GrIDVIEw { public MyGrIDVIEw(Context context) {        super(context);    }    public MyGrIDVIEw(Context context,AttributeSet attrs) {        super(context,attrs);    }    public MyGrIDVIEw(Context context,AttributeSet attrs,int defStyle) {        super(context,attrs,defStyle);    }    @OverrIDe    protected voID onMeasure(int wIDthMeasureSpec,int heightmeasureSpec) {        int heightSpec;        if (getLayoutParams().height == LayoutParams.WRAP_CONTENT) {            // The two leftmost bits in the height measure spec have            // a special meaning,hence we can't use them to describe height.            heightSpec = MeasureSpec.makeMeasureSpec(                    Integer.MAX_VALUE >>2,MeasureSpec.AT_MOST);        }        else {            // Any other height should be respected as is.            heightSpec = heightmeasureSpec;        }        super.onMeasure(wIDthMeasureSpec,heightSpec);    }}

和新的XML文件

<?xml version="1.0" enCoding="utf-8"?> <relativeLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"androID:layout_wIDth="fill_parent"androID:layout_height="fill_parent"androID:gravity="center" ><relativeLayout    androID:ID="@+ID/layout_month"    androID:layout_wIDth="fill_parent"    androID:layout_height="fill_parent" >    <TextVIEw        androID:ID="@+ID/textv_month_name"        androID:layout_wIDth="fill_parent"        androID:layout_height="wrap_content"        androID:clickable="false"        androID:gravity="center_horizontal|center_horizontal"        androID:textcolor="#ffffff"        androID:textSize="7dp" />    <ImageVIEw        androID:ID="@+ID/top_bar"        androID:layout_wIDth="fill_parent"        androID:layout_height="15dp"        androID:layout_below="@+ID/textv_month_name"        androID:background="@drawable/calendar_top_small"        androID:clickable="false" />    <com.arun.calendar.MyGrIDVIEw        androID:ID="@+ID/grIDv_inner"        androID:layout_wIDth="match_parent"        androID:layout_height="wrap_content"        androID:layout_below="@+ID/top_bar"        androID:layout_gravity="center"        androID:clickable="false"        androID:gravity="center"        androID:numColumns="7"        androID:stretchMode="columnWIDth" /></relativeLayout><button    androID:ID="@+ID/monthBtn"    androID:layout_wIDth="fill_parent"    androID:layout_height="fill_parent"    androID:background="@androID:color/transparent" /></relativeLayout>

并在java文件中

MyGrIDVIEw  vIEwHolder.grIDVIEw = (MyGrIDVIEw) v.findVIEwByID(R.ID.grIDv_inner);
总结

以上是内存溢出为你收集整理的android – Gridview只返回一行全部内容,希望文章能够帮你解决android – Gridview只返回一行所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1134874.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存