ScrollView嵌套Listview导致Listview显示不全解决方案
2015-08-10 11:54
429 查看
在做大量图片展示的APP的时候(如电商项目)经常需要用ScrollView去嵌套Listview(Gridview),由于ScrollView和Listview中都有上下滑动属性,所以产生了冲突。解决的办法是让Listview完全展开,只需要重写一下Listview的onMeasure(int widthMeasureSpec, int heightMeasureSpec)方法即可。
在Listview构建过程中如果measure specification mode是MeasureSpec.AT_MOST的话,就表示Listview会完全适应其item的数目高度,Listview不会产生滑动的情况,这样ScrollView中的Listview就得以正常显示了。
然而可能我们又会发现一个问题,Listview虽然正常显示了,但是有时候在进入界面的时候,ScrollView会自动滑动到Listview的位置,假如Listview位置在页面的下半部分,整个页面一加载其下半部分就会显示在屏幕顶部,而其上半部分就会滑出屏幕顶部,这显然不是我们所希望的,其实解决这个问题很简单,在加载页面的时候只需要让页面滑回来即可
一行代码搞定!
public class MyListView extends ListView { public MyListView(Context context) { super(context); // TODO Auto-generated constructor stub } public MyListView(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub } public MyListView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Override public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int expandSpec = MeasureSpec.makeMeasureSpec( Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST); super.onMeasure(widthMeasureSpec, expandSpec); } }
在Listview构建过程中如果measure specification mode是MeasureSpec.AT_MOST的话,就表示Listview会完全适应其item的数目高度,Listview不会产生滑动的情况,这样ScrollView中的Listview就得以正常显示了。
然而可能我们又会发现一个问题,Listview虽然正常显示了,但是有时候在进入界面的时候,ScrollView会自动滑动到Listview的位置,假如Listview位置在页面的下半部分,整个页面一加载其下半部分就会显示在屏幕顶部,而其上半部分就会滑出屏幕顶部,这显然不是我们所希望的,其实解决这个问题很简单,在加载页面的时候只需要让页面滑回来即可
mScrollView.smoothScrollTo(0, 0);
一行代码搞定!
相关文章推荐
- [前端] canvas绘制圆、渐变、字体和图片及其他
- 黑马程序员——类加载器
- ssh免密码登陆远程服务器
- 如何在WPF中嵌入Winform控件
- 求最长不降子序列
- 自定义ViewGroup控件(一)----->流式布局进阶(一)
- VC中定时器的使用
- Javascript 方法apply和call的区别
- 一道多线程笔试题目的联想
- Ubuntu下搜狗输入的安装
- 杂谈_我希望在软件开发生涯初期就知道的 4 件事
- 一个字符串有两个A,计算里面的字符个数,并打印出来
- Go-下载网上图片
- 医院病床分配仿真 举例(c语言)
- 探索React生态圈
- 两个数的乘积等于其最大公约数与最小公倍数的乘积,怎么证明?
- 获取URL对应的资源
- 1047. Student List for Course (25)
- 最长公共子序列(LCS)
- IOS开发之多线程详解