ListView嵌套GridView显示不全解决方法

转载注明出处:http://blog.csdn.net/allen315410/article/details/40152987

最近在做项目中,有个模块需要在ListView中嵌套一个GridView制作“九宫格”的效果,结果GridView上的子元素仅仅显示了一行,没有显示完整的说,如下图:

其实这个ListView上一共需要显示的是6张图片,也就是说还有3张图片需要在下一行显示的,结果GridView没有显示完全,这个问题很奇怪,但是已经找到解决的方案,就是重写一个GridView,做一个自定义的GridView,然后重写GridView的onMeasure(int widthMeasureSpec, int heightMeasureSpec)的方法,将GridView重新测量,并且指定GridView的新的高度。代码如下:

import android.content.Context;
import android.util.AttributeSet;
import android.widget.GridView;

/**
 * 自定义的“九宫格”——用在显示帖子详情的图片集合
 * 解决的问题:GridView显示不全,只显示了一行的图片,比较奇怪,尝试重写GridView来解决
 *
 * @author lichao
 * @since 2014-10-16 16:41
 *
 */
public class SodukuGridView extends GridView {

	public SodukuGridView(Context context) {
		super(context);
		// TODO Auto-generated constructor stub
	}

	public SodukuGridView(Context context, AttributeSet attrs) {
		super(context, attrs);
		// TODO Auto-generated constructor stub
	}

	public SodukuGridView(Context context, AttributeSet attrs, int defStyle) {
		super(context, attrs, defStyle);
		// TODO Auto-generated constructor stub
	}

	@Override
	protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
		// TODO Auto-generated method stub
		int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
		super.onMeasure(widthMeasureSpec, expandSpec);
	}

}

以下是布局文件:

<com.fc62.raisebook.view.SodukuGridView
        android:id="@+id/gridview"
        android:layout_width="220dp"
        android:layout_height="wrap_content"
        android:layout_below="@id/tv_question_content"
        android:layout_marginBottom="5dp"
        android:layout_marginLeft="10dp"
        android:layout_marginTop="5dp"
        android:columnWidth="70dp"
        android:gravity="center"
        android:horizontalSpacing="2.5dp"
        android:numColumns="3"
        android:stretchMode="columnWidth"
        android:verticalSpacing="2.5dp" >
    </com.fc62.raisebook.view.SodukuGridView>

然后就拿这个自定义的GridView当做普通的GridView一样使用即可。问题解决了:

好了,这就是解决方案,不知道有没有更好的,期待一起探讨学习!

时间: 2025-01-06 23:40:20

ListView嵌套GridView显示不全解决方法的相关文章

android ListView嵌套GridView显示不全问题

只需重写GridView即可:public class MyGridView extends GridView{ public MyGridView(android.content.Context context, android.util.AttributeSet attrs) { super(context, attrs); } /*... 只需重写GridView即可: public class MyGridView extends GridView { public MyGridView

解决ScrollView下嵌套ListView、GridView显示不全的问题(冲突)

原文地址:http://blog.csdn.net/cs_li1126/article/details/12906203 一.使用网上用的动态改变listview高度的方法,该方法只适用于item布局是LinearLayout布局的情况,不能是其他的,因为其他的Layout(如RelativeLayout)没有重写onMeasure(),所以会在onMeasure()时抛出异常.所以使用限制较大. [java] view plaincopy public class Utility { publ

div css每行文字显示一半 同时文字字体重叠显示不全解决方法

CSS DIV布局中出现单行或多行文字的每行文字内容不能显示全,上下行文字有一点点重叠现象,文字字体只显示一半解决方法,在低版本IE特别明显文字字体显示不全,在谷歌浏览器等高版本IE浏览器测试还好些. 新手布局时候特别爱出现DIV盒子里文字字体显示不完整,音乐沙发甚至上下行文字有一点重叠现象. css字体文字重叠显示不完整重叠字体字体文字重叠显示不完整同时有重叠重合效果截图 在DIV+CSS布局中造成这种字体显示不全,音乐沙发显示一半同时多行文字有一点点重叠情况原因:css行高小于CSS字体大小

解决ScrollView下嵌套ListView、GridView显示不全的问题

/** * 自定义gridview,解决ListView中嵌套gridview显示不正常的问题(1行半) * @author wangyx * @version 1.0.0 2012-9-14 */ public class MyGridView extends GridView{ public MyGridView(Context context, AttributeSet attrs) { super(context, attrs); } public MyGridView(Context

ListView嵌套GridView显示不完整的解决方案

转载注明出处:http://blog.csdn.net/allen315410/article/details/40152987 近期在做项目中,有个模块须要在ListView中嵌套一个GridView制作"九宫格"的效果.结果GridView上的子元素只显示了一行.没有显示完整的说.例如以下图: 事实上这个ListView上一共须要显示的是6张图片.也就是说还有3张图片须要在下一行显示的,结果GridView没有显示全然,这个问题非常奇怪.可是已经找到解决的方案,就是重写一个Grid

jQuery UI的下拉框显示不全解决方法

解决前,显示不全,select下拉框某些选项无法看到: <script type="text/javascript"> $("#cond_EPARCHY_CODE").selectmenu(); </script> 解决后: <style> .overflow { height: 200px; } </style> <script type="text/javascript"> $(&q

ListView中嵌套GridView显示不全的解决方法

项目需要,在ListView中显示多张图片,用到了GridView,不过如果使用普通的GridView,Item仅仅只是显示一部分,超出第一行以后的都无法显示了,这个很无语,所以又得继承下GridView重写onMeasure方法去测量子控件的宽高了.. 这里只是贴出自定义GridView的代码,直接在xml中使用,ListView的Adapter中调用即可: public class GridViewForListView extends GridView { public GridViewF

解决嵌套GridView显示不全的问题

package com.adan.selectcitydome.view; import android.content.Context; import android.util.AttributeSet; import android.widget.GridView; /** * 自定义GridView,解决嵌套Grideview的显示不完全的问题 */ public class MyGridView extends GridView { public MyGridView(Context c

TableViewCell的分割线显示不全解决方法

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { if ([cell respondsToSelector:@selector(setSeparatorInset:)]) { [cell setSeparatorInset:UIEdgeInsetsZero]; } if ([cell resp