解决!Gallery中嵌套ListView,Gallery不能滑动的问题
直接代码,请看注释
/** 引入相关类* */import android.content.Context; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.ViewConfiguration; import android.widget.Gallery;/** 继承Gallery,重写onInterceptTouchEvent(MotionEvent ev)方法* */public class BetterGallery extends Gallery {private float mLastMotionX;//滑动过程中,x方向的初始坐标private float mLastMotionY;//滑动过程中,y方向的初始坐标private int mTouchSlop;//手指大小的距离/** 三个构造函数* */public BetterGallery(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);init();}public BetterGallery(Context context, AttributeSet attrs) {super(context, attrs);init();}public BetterGallery(Context context) {super(context);init();}/** 初始化,设置x方向移动的最小距离为手指大小时,拦截处理事件,可以设置需要的大小* */private void init() {final ViewConfiguration configuration = ViewConfiguration.get(getContext());mTouchSlop = configuration.getScaledTouchSlop();}/** 重写的方法,最关键的地方* */public boolean onInterceptTouchEvent(MotionEvent ev) {final int action = ev.getAction();//获取触摸事件类型final float x = ev.getX();//每次触摸事件的x坐标final float y = ev.getY();//每次触摸事件的y坐标switch (action) {case MotionEvent.ACTION_DOWN://按下事件mLastMotionX = x;//初始化每次触摸事件的x方向的初始坐标,即手指按下的x方向坐标mLastMotionY = y;//初始化每次触摸事件的y方向的初始坐标,即手指按下的y方向坐标break;case MotionEvent.ACTION_MOVE:final int deltaX = (int) (mLastMotionX - x);//每次滑动事件x方向坐标与触摸事件x方向初始坐标的距离final int deltaY = (int) (mLastMotionY - y);//每次滑动事件y方向坐标与触摸事件y方向初始坐标的距离boolean xMoved = Math.abs(deltaX) > mTouchSlop && Math.abs(deltaY/deltaX) < 1;//判断触摸事件处理的传递方向,该业务中是,//x方向的距离大于手指,并且y方向滑动的距离小于x方向的滑动距离时,Gallery消费掉此次触摸事件//如果需要,请在您的业务中,改变判断的逻辑if (xMoved) {//Gallery需要消费掉此次触摸事件return true;//返回true就不会将此次触摸事件传递给子View了,我的业务中是ListView }break;}return false;//将此次触摸事件传递给子View,即ListView } }
转载于:https://www.cnblogs.com/denghaoming/archive/2012/09/14/2684302.html
解决!Gallery中嵌套ListView,Gallery不能滑动的问题相关推荐
- scrollview中嵌套listview产生冲突问题
在scrollview中嵌套listview或者gridview时 如果listview或者gridview的高度时wrap-content会导致两者只显示一行多一点 原因: listview和gri ...
- ScrollView中嵌套ListView
放置比较少的ListView组件效果图: Item布局文件 list_view_item.xml 布局文件的内容: <RelativeLayo ...
- Android之解决在scrollview中嵌套ListView切换界面时scrollview整体向下滑动
有时候我们在scrollview中会嵌套ListView,在嵌套ListView(ListView上面还有一些控件)后,切换Activity时会发现整个 scrollview 被向下滑动直到ListV ...
- 仿Android GridView以解决ScrollView中嵌套自带GridView滚动条冲突问题
有时候做Android开发难免会遇到ScrollView中嵌套GridView现象,一旦要他们结合使用就会出现一堆问题,这里考虑使用LinearLayout仿GridView去解决一下这个问题! 1. ...
- Android listview 中嵌套 listview
在 父listview中 adapter的 getview 中 设置 子listview 的 adapter 之后 添加下面方法,传入子listview. public void setListVie ...
- [Android]解决ClickableSpan中点击后ListView中item的长按冲突的问题
以下内容为原创,转载请注明: 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/3823429.html 项目中碰到一个问题,情景是这样的: 有一个Lis ...
- Android中ExpandableListView中嵌套ListView
最近项目挺紧张,一直没有时间总结学习,今天把最近遇到的一个奇葩的设计,做一下总结.其他的好多的APP中做的通讯录都类似微信通讯录这样,但是有这样一个需求的设计. 就是分为两个组,第一个组不需要A-Z的 ...
- ScrollView中嵌套ListView控件,数据无法显示完全
为什么80%的码农都做不了架构师?>>> public void setListViewHeightBasedOnChildren(ListView listView) { / ...
- 四种方案解决ScrollView嵌套ListView问题
在工作中,曾多次碰到ScrollView嵌套ListView的问题,网上的解决方法有很多种,但是杂而不全.我试过很多种方法,它们各有利弊. 在这里我将会从使用ScrollView嵌套ListView结 ...
- android中ScrollView嵌套ListView或GridView显示位置问题
Android中ScrollView中嵌套ListView或GridView时在开始进入界面时总是显示中间位置,开头的位置显示不出来.这种情况下只需要在ScrollView的父控件中添加以下两行代码即 ...
最新文章
- 如何在vc的拆分窗口中使用CFormView派生类
- oracle链接字符串java,java连Oracle连接字符串写法
- DEDE 5.7分类联动BUG
- beanshell变量无法传到jmeter_学会BeanShell,才敢说自己懂Jmeter
- 对qps、tps、pv、uv的理解
- 一云多端,连接万物:智能接入网关2.0升级技术揭秘
- for语句中声明变量
- JSP指令标记和动作标记
- Linux安装tomcat并使用+热部署
- QGIS 3初级到高级
- 《大学之路》读书笔记(上)范文3700字
- SQLServer身份证号或手机号字段隐藏某几位显示
- 【论文笔记】Neural Relation Extraction with Multi-lingual Attention
- java实现windows下amr转换为mp3(可实现微信语音和qq语音转换)
- 2021软科计算机科学与技术,2021软科世界一流学科即将重磅发布!
- C语言版家谱管理系统
- ArcGIS栅格按照象元大小生成矢量的方法
- Evm链原生代币转账
- 搜集整理的一些博客导航
- Meego系统全面解析