搜索
热搜: 活动 交友 discuz
查看: 3463|回复: 0
打印 上一主题 下一主题

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

[复制链接]

160

主题

165

帖子

814

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
814
跳转到指定楼层
楼主
发表于 2016-8-17 21:22:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

    转载注明出处: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的新的高度。代码如下:


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


  1. import android.content.Context;
  2. import android.util.AttributeSet;
  3. import android.widget.GridView;

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

  13.         public SodukuGridView(Context context) {
  14.                 super(context);
  15.                 // TODO Auto-generated constructor stub
  16.         }

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

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

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

  31. }
复制代码
以下是布局文件:
  1. <com.fc62.raisebook.view.sodukugridview
  2.         android:id="@+id/gridview"  
  3.         android:layout_width="220dp"  
  4.         android:layout_height="wrap_content"  
  5.         android:layout_below="@id/tv_question_content"  
  6.         android:layout_marginBottom="5dp"  
  7.         android:layout_marginLeft="10dp"  
  8.         android:layout_marginTop="5dp"  
  9.         android:columnWidth="70dp"  
  10.         android:gravity="center"  
  11.         android:horizontalSpacing="2.5dp"  
  12.         android:numColumns="3"  
  13.         android:stretchMode="columnWidth"  
  14.         android:verticalSpacing="2.5dp" >  
  15.       
复制代码
然后就拿这个自定义的GridView当做普通的GridView一样使用即可。问题解决了:






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|安卓论坛  

GMT+8, 2024-4-29 22:15 , Processed in 0.057325 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2013 Design S!|ƽ̶

快速回复 返回顶部 返回列表