Android: 解决GridView、ListView在ScrollView中出现冲突的问题 ——诺诺"涂鸦"记忆
来源:互联网 发布:程序员考试下午真题 编辑:程序博客网 时间:2024/05/16 17:38
---------- 诺诺学习技术交流博客、期待与您交流! ----------
详情请查看:http://blog.csdn.net/sun_promise
解决GridView、ListView在ScrollView中出现显示异常的问题
1.问题描述
在android中ScrollView是不能嵌套具有滑动特性的View的,eg: Gridview、ListView.
直接嵌套Gridview或ListView可能会出现的问题:
1)界面显示会出现只显示一行、最后一行显示不全等显示效果与预期不同,因为android禁止这样使用,放入ScrollView中的Gridview(或ListView)的高度是无法计算的。2)嵌套中的子ListView和GridvIew是无法滑动的,因为子控件的滑动事件会被父ScrollView拦截,如果想让子控件可以滑动,只能强行的拦截滑动的相关事件(下面没有给出相关的事件处理方式,如果子view控件一定要滑动效果,必须单独处理事件)。3)若ScrollView内还包含其他view,还有可能会出现-----进入页面会默认定位到Gridview(或ListView)的第一条……
2.解决方式
1)重写ListView或GridView,让其失去滑动特性。在重写的onMeasure()方法中加入如下代码即可:
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec){ int spec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST); super.onMeasure(widthMeasureSpec, spec); }
2)经过验证,试了上面的方法,开始是ok的,但是后来就出现各种显示问题,还不如不用。键盘都快碎了,查找网上资料提供的各种方法都不管用,最后没办法了,将GridView的高度固定,若每个item中包含文字图片等不一样的资源,就要将图片等view的高度也要固定了,否则显示一片混乱(本人是通过固定view高度解决的此问题,其他的方案都无用)。其实很多问题都要具体问题具体分析,别人的解决方式不一定就适合你,毕竟每个人的代码环境和实现方式各有千秋。建议实际开发中,ScrollView不要嵌套GridView或ListView使用,真的是会出现很多很多问题。
3.示例代码
重写GridView:
/***自定义不可滑动的GridView*/public class NoScrollGridView extends GridView{ public NoScrollGridView(Context context, AttributeSet attrs){ super(context, attrs); } /** *重写此方法是为了重画GridView: ScrollView中是不能嵌套具有滑动特性的View,为防止与scrollView一起使用时出现的冲突问题 */ public void onMeasure(int widthMeasureSpec, int heightMeasureSpec){ int spec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST); super.onMeasure(widthMeasureSpec, spec); } /**以下部分可做view其他处理*/}重写ListView:
/***自定义不可滑动的ListView*/ public class NoScrollListView extends ListView{ public NoScrollListView(Context context, AttributeSet attrs){ super(context, attrs); } /** *重写此方法是为了重画GridView: ScrollView中是不能嵌套具有滑动特性的View,为防止与scrollView一起使用时出现的冲突问题 */ public void onMeasure(int widthMeasureSpec, int heightMeasureSpec){ int mSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST); super.onMeasure(widthMeasureSpec,mSpec); } /**以下部分可做view其他处理*/}
---------- 诺诺学习技术交流博客、期待与您交流! ----------
详情请查看:http://blog.csdn.net/sun_promise
0 0
- Android: 解决GridView、ListView在ScrollView中出现冲突的问题 ——诺诺"涂鸦"记忆
- Android:解决TextView排版混乱问题 ——诺诺"涂鸦"记忆
- 如何打开APP在应用市场中对应的的activity页面---Android拓展篇 ——诺诺"涂鸦"记忆
- Android 解决bug:异常提示"ListView cannot be cast to android.widget.BaseAdapter "——诺诺"涂鸦"记忆
- ScrollView中嵌套ListView和GridView冲突问题的解决
- 解决bug:使用Genymotion模拟器时运行出现错误INSTALL_FAILED_CPU_ABI_INCOMPATIBLE——诺诺"涂鸦"记忆
- 解决bug:在eclipse中导入Android项目时报错: “invalid resource directory name bin/res/crunch”——诺诺"涂鸦"记忆
- Android 中解决ScrollView嵌套ListView或者GridView时的冲突问题
- 解决水平ListView在ScrollView中出现的滑动冲突
- Android中 如何在本Activity页面退出后回到首页或者指定的Activity入口——诺诺"涂鸦"记忆
- Android Studio导入eclipise快捷键——诺诺"涂鸦"记忆
- 解决ListView在ScrollView中滑动冲突的问题
- Android中TextView与EditText控件实现禁止换行——诺诺"涂鸦"记忆
- Android中 获取手机通讯录和手机机主手机号码——诺诺"涂鸦"记忆
- Android ScrollView中嵌套ListView,滑动冲突问题的解决
- Android ScrollView中嵌套ListView,滑动冲突问题的解决
- GitLab/Git在AndroidStudio上的配置和简单使用 ——诺诺"涂鸦"记忆
- 实现水平ListView,并且解决水平ListView在ScrollView中Listview中出现的滑动冲突
- viewpager 左右滑动笔记
- 解释器模式
- Android-Tips(实用Android开发技巧)
- 实现回调的两种形式
- matlab 3D绘图详解
- Android: 解决GridView、ListView在ScrollView中出现冲突的问题 ——诺诺"涂鸦"记忆
- seq 工具介绍
- Pandas 结构化数据(上)
- 柳峰微信公众平台开发教程企业号修改篇(企业菜单篇)
- Java反射之内部类
- androird 优秀新闻github
- ios调用百度、高德地图 导航功能
- imx6 Uboot 移植小结
- 请求转发和重定向