显示所有行所需的高度.但是,我只是看到了
设置时一行(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只返回一行所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)