GridView其子项充满其父类

最近要做一个是日程管理的工具,而其中有一个界面类似于Google自带的日历(Calendar)的月查看的视图,就是有一个7例6行的表格要占满整个指定区域。一开始我就想用GridView来做,然而在开发的过程中,我发现GridView的内容的高度是这样的,如果你不设定Adapter中getView 返回的 View 的高度那就是自适应,如果你设定了高度,如果内容没有超出GridView那留空白,如果超出了,就用滑动处理。而需求是要刚好占满整个GridView的区域。于是没有招了。
我想到的首先是把Google的日历源码找来研究,看看牛B人物是怎么解决这个问题的。首先是下源码十分折腾人,也不知知Google那帮人怎么会事,难道就不能让下源码像下电影那要方便吗。后来在 https://github.com/android 这里找到了Calendar的源码。然后,当把源码弄到Eclipse里发现一大堆的红叉,郁闷啊。原来,是有的 被 引用的类没有,于是又在网上找没有的类,找到后一个一个按照源码中所示的包,新建包,加入Java文件。这样搞了半天,终于没有红叉了,一运行,界面如约而至,有点小兴奋,终于好了。然后马上开始看与月查看相关的的类,然后一看,我就崩溃了。原来弄一个界面出来,要写一千多行代码,还不包括引用其它类的代码。没办法,只能硬着头皮看下去。在看代码的两天中,我是感到从来没有的挫败感 ,自已的项目没有任何进展,而Google的源码依然是云里雾里。最后我决定不能死克Google的源码,再去找找看看有没有其它的日历的例子。最后发现李宁有讲开发日历的课程,而他的《Android/Ophone  开发完全讲义》中有关于日历的例子,于是开始找《Android/Ophone  开发完全讲义》的电子书和源码。搜了半天也没发现有电子书,于是在那天下班之前,我一冲动便在京东上下了单。第二天上午,依然是毫无进展的沮丧,快到中午时书到了。于是下午我便把书中的源码弄到Eclipse,然后抱着书研究。以前认为,搞不懂Google的源码是因为没有讲解,而注释又是英文 。虽然本人也是过了六级,可是面对那些注释,却还是感到自己的英文很差。然而,在抱着书看了一个午后,虽然书上的源码比Google的简单,也有讲解,注释还是中文,但依旧不太明白,作者是怎么实现的,并且也发现作者的实现方法过于繁琐。眼看就毫无希望 了,我决定这周还搞不定就向TL说,这个项目对于我来说太难了,让他再想办法吧。
第二天,我在想能不能用代码给各控件一个相应的高度,而不是使用Wrap_content 和Fill_parent。然而,却发现在Actvity里,在界面没有出现之前(例如在OnCreate和OnStart中),各控件的高度没有值的,所以我得不到状态栏的高度,也就没法得到我放控件的区域的高度。希望再次破灭。 然而,我却鬼使神差般将GridView传到Adapter中在 getView中将GridView的高度减去行线后,除6平分,作为getView 返回的 View 的高度,一运行,奇迹出显了,GridView内容的高度刚好填充整个GridView的高度。后来追踪一下发现,GrivdView的高度值只有在Adatpter的getView   才会有值 ,并且前几次调用时还没有,后面才有的。
于是,GridView高度的问题在折磨了我近一个星期后,就这样解决了。于是我又可以加速开发我的项目了。

核心代码:
public View getView(int position, View convertView, ViewGroup parent) {
        convertView = LayoutInflater.from(context).inflate(R.layout.item, null);
        AbsListView.LayoutParams param = new AbsListView.LayoutParams(
                android.view.ViewGroup.LayoutParams.FILL_PARENT,
                mGv.getHeight()/ROW_NUMBER);
//			int height = mGv.getHeight();
//			int width = mGv.getWidth();
//			GridView.LayoutParams params = new GridView.LayoutParams(width / 7,
//					height / 6);
//			convertView.setLayoutParams(params);
 
        return convertView;
    }

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值