ListView嵌套GridView
首先,我们通过两个实例来了解下本篇文章所讲的重点,看下图:
微博:
陌陌:
大家应该对这两款软件并不陌生,接下来,我将列举下本文将要实现的几个点:
1.ListView嵌套GridView,互不冲突,界面显示及操作正常;
2.GridView中的图片依据屏幕大小,自动扩大或缩小以适应屏幕,并始终保持正方形;
3.图片数量不同时,布局不同(如上图的4张图片和6张图片);
4.点击ListView的item和点击Gridview的item互不冲突;
5.在GridView区域外的任何一点点击都可以触发ListView的item;
大家也可以针对上面的几点思考下应该如何实现。。。
。。。
好,思考完毕,接下来讲一下我的实现思路:
1.ListView嵌套GridView互不冲突的话就要重写GridView了,这个想必大家都知道,类似ScrollView嵌套ListView,不再多讲;
2.如何让GridView的图片适应屏幕并始终保持正方形呢,这个问题其实我在上几篇博客就已经讲过了,就是根据:屏幕的宽度-GridView以外的部分的宽度-n个图片间距的宽度,最后/GridView每行item的数量;GridView如何适配不同屏幕,当然,所用的都是像素值,因此需要将在xml中的dp转换为px后再进行计算;
3.针对第三点,我们可以根据图片的数量,动态的设置GridView的numColumns;
4.当我们实现的过程中,可能会遇到点击图片可以,但是点击ListView的item时无效,这时我们可以在ListView的item的最外层添加:
android:descendantFocusability="blocksDescendants"
属性即可;
5.第五点,我们可以先体验下微博或者陌陌,只要点击图片外任何区域,均能触发LIstView的item,但我们在实现的过程中却会遇到这种问题,即便我们把GridView的宽度设置为wrap_content,却依然充满了布局,导致右半部分全是GridView的布局,也就无法实现这种效果。因此,我们仍需要根据图片数量,动态的设置GridView的宽度。
接下来,我们来看下本篇所实现的效果:
1.
2.
3.
4.
5.
项目结构:
项目源码:http://download.csdn.net/detail/baiyuliang2013/8354615
补充:如果想缩小图片,可以扩大GridView离右边框的间距即可,在item_listview.xml布局中,如下:
<RelativeLayout
android:id="@+id/rl4"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/rl3"
android:paddingRight="25dp"
android:visibility="gone" >
<com.byl.listviewwithgrid.view.MyGridView
android:id="@+id/gv_images"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:horizontalSpacing="2dp"
android:listSelector="@null"
android:numColumns="3"
android:stretchMode="columnWidth"
android:verticalSpacing="2dp" >
</com.byl.listviewwithgrid.view.MyGridView>
</RelativeLayout>
扩大
android:paddingRight="25dp"
当然,此后再进行计算时,就要用你自己设置的dp转px后计算了...
ListView嵌套GridView的更多相关文章
- android listView嵌套gridview的使用心得
在开发的过程中可能需要用到listview嵌套gridview的场景,但是在Android中, 不能在一个拥有Scrollbar的组件中嵌入另一个拥有Scrollbar的组件,因为这不科学,会混淆滑动 ...
- ScrollView嵌套ListView嵌套GridView的上下拉以及加载更多
ScrollView 效果 ScrollView 说明 一个ScrollView 嵌套ListView 嵌套GridView的上拉加载更多,下拉刷新的demo. 主要是重写了GridView和Lsit ...
- ListView嵌套GridView,显示不全解决办法
ListView嵌套GridView时,遇到了GridView只显示一行,其余都显示不出来的问题,最终解决办法如下: 需要自定义GridView,重新绘制高度即可: public class MyGr ...
- ListView嵌套GridView使用详解及注意事项
ListView嵌套GridView即ListView的每个Item中都包含一个GridView:需要注意的是由于ListView和GridView都是可滑动的控件. 所以需要自定义GridView, ...
- Flutter中用ListView嵌套GridView报错异常
flutter中的ListView组件和GridView组件都是常用的布局组件,有时候ListView中需要嵌套GridView来使用,例如下图: 这种情况就需要在ListView里面再嵌套一个Gri ...
- 【Android】listview 嵌套gridview报错,代码:”during second layout pass: posting in next frame
作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985, QQ986945193 公众号:程序员小冰 说明:本人曾经在listview嵌套gridview出现 ...
- Android中ListView嵌套GridView的简单消息流UI(解决宽高问题)
最近搞一个项目,需要用到类似于新浪微博的消息流,即每一项有文字.有九宫格图片,因此这就涉及到ListView或者ScrollView嵌套GridView的问题.其中GridView的高度问题在网上都很 ...
- ListView嵌套GridView显示不完整的解决方案
转载注明出处:http://blog.csdn.net/allen315410/article/details/40152987 近期在做项目中,有个模块须要在ListView中嵌套一个GridVie ...
- listview嵌套gridview,并实现grid元素部分显示以及点击展开与折叠
原文链接:http://blog.csdn.net/duguju/article/details/49538341 有时我们需要用GridView显示目录列表,有时甚至是二级的,即listview每一 ...
随机推荐
- [JLOI2011]飞行路线
Description Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司.该航空公司一共在n个城市设有业务,设这些城市分别标记为0到n-1,一共有m种航线,每种航线连接两个城市,并 ...
- bzoj 1046: [HAOI2007]上升序列
Description 对于一个给定的S={a1,a2,a3,…,an},若有P={ax1,ax2,ax3,…,axm},满足(x1 < x2 < … < xm)且( ax1 < ...
- hdu5635 BestCoder Round #74 (div.2)
LCP Array Accepts: 131 Submissions: 1352 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 13 ...
- POJ2187Beauty Contest 旋转卡壳
题目链接 http://poj.org/problem?id=2187 先求凸包 再求凸多边形直径 旋转卡壳模板题 #include<cstdio> #include<cstring ...
- 移动端手势双击(MouseDown也可以在移动端响应,但是帧率太低)
void Update() { if (Input.touchCount > 0)//手指数量 { if(Input.GetTouch(0).phase == TouchPhase.Began ...
- 如何理解Spring IOC
Spring IOC 思维导图 要了解控制反转( Inversion of Control ), 我觉得有必要先了解软件设计的一个重要思想:依赖倒置原则(Dependency Inversion Pr ...
- TensorFlow LSTM 注意力机制图解
TensorFlow LSTM Attention 机制图解 深度学习的最新趋势是注意力机制.在接受采访时,现任OpenAI研究主管的Ilya Sutskever提到,注意力机制是最令人兴奋的进步之一 ...
- 动态规划--Kin
动态规划: 1.最大子序列和 2.LIS最长递增子序列 3.LCS最长公共子序列 4.矩阵连乘 5.数字金字塔 1.最大子序列和 #include<iostream> using name ...
- html取地址栏参数的方法
现在的人写的博客真是日常挖坑 闲的蛋疼 想把所有东西都转成jstl格式 有个界面是取地址栏的信息的 之前用的是 <%--不用jstl的方法直接传递--%> <%--String ro ...
- 反射实现java深度克隆
一.克隆 有时想得到对象的一个复制品,该复制品的实体是原对象实体的克隆.复制品实体的变化不会引起原对象实体发生变化,这样的复制品称为原对象实体的克隆对象或简称克隆. 1.浅复制(浅克隆) 概念:被复制 ...