Android ListView的item中嵌套ScrollView的解决办法

前沿:有时候,listview 的item要显示的字段比较多,考虑到显示问题,item外面不得不嵌套ScrollView来实现,于是问题来了,当listview需要做点击事件时,由于ScrollView的嵌套使用,拦截了listvew点击事件:只好重写listview来实现了。

/** * * @author 作者:易皇星 * * @da2016年10月24日 时间: * * @toTODO 类描述: 解决 ListView中嵌套ScrollView,ScrollView拦截ListView的Item点击事件的解决办法 * * * 在listview中嵌套ScrollView,发现横滑竖滑都正常,但是无法单击Listview的Item。查询Android分发机制后解决,继承Listview重写Listview的onInterceptTouchEvent。 * * onInterceptTouchEvent中总是调用listview的onTouchEvent保证listview的事件都执行, * super.onInterceptTouchEvent(ev)不会拦截需要传递给ScrollView的横滑。 */ public class MyListView extends ListView { private int flag = 0; private float StartX; private float StartY; public MyListView(Context context) { super(context); // TODO Auto-generated constructor stub } public MyListView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); // TODO Auto-generated constructor stub } public MyListView(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub } @Override public boolean onInterceptTouchEvent(MotionEvent ev) { // 总是调用listview的touch事件处理 onTouchEvent(ev); if (ev.getAction() == MotionEvent.ACTION_DOWN) { StartX = ev.getX(); StartY = ev.getY(); return false; } if (ev.getAction() == MotionEvent.ACTION_MOVE) { float ScollX = ev.getX() - StartX; float ScollY = ev.getY() - StartY; // 判断是横滑还是竖滑,竖滑的话拦截move事件和up事件(不拦截会由于listview和scrollview同时执行滑动卡顿) if (Math.abs(ScollX) < Math.abs(ScollY)) { flag = 1; return true; } return false; } if (ev.getAction() == MotionEvent.ACTION_UP) { if (flag == 1) { return true; } return false; } return super.onInterceptTouchEvent(ev); } }

以上所述是小编给大家介绍的Android ListView的item中嵌套ScrollView的解决办法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

时间: 2024-12-24 22:18:16

Android ListView的item中嵌套ScrollView的解决办法的相关文章

Android ListView的item中嵌套ScrollView的解决办法_Android

 前沿:有时候,listview 的item要显示的字段比较多,考虑到显示问题,item外面不得不嵌套ScrollView来实现,于是问题来了,当listview需要做点击事件时,由于ScrollView的嵌套使用,拦截了listvew点击事件:只好重写listview来实现了. /** * * @author 作者:易皇星 * * @da2016年10月24日 时间: * * @toTODO 类描述: 解决 ListView中嵌套ScrollView,ScrollView拦截ListView的

解决android Listview的item中最外层Margin失效的问题

1.在开发中发现这么一种现象: List中的Item是LinearLayout,这个Item的最外层,设置了margin属性.全部失效. 从图中可以看出, AbsListView的layoutparam不包含有Margin信息.包含有margin的layout是正常的几个基础布局. 解决方案: 在你的listview里面加上下面代码 android:divider="#00000000" android:dividerHeight="10dp" android:la

Android ListView 和ScroolView 出现onmeasure空指针的解决办法

ListView 和ScroolView同时使用计算高度时onmeasure报空指针的解决办法 前言: 虽然Android 的设计者始终认为ListView.GridView+ScroolView组合使用并不是一种比较好的实现方法.但是在我们开发过程中又会经常使用到这样的需求,特别是在适配小屏幕手机的时候又必须要用这种让人不接受的设计,下面就来说一下在计算ListView或者GridView的过程中会出现onmeasure空指针的问题. 解决办法 当我发现listItem.measure(0,0

Android中ScrollView嵌套GridView的解决办法

前些日子在开发中用到了需要ScrollView嵌套GridView的情况,由于这两款控件都自带滚动条,当他们碰到一起的时候便会出问题,即GridView会显示不全. 找到大家的通用解决办法.记录一下. 解决办法,自定义一个GridView控件 public class MyGridView extends GridView { public MyGridView(Context context, AttributeSet attrs) { super(context, attrs); } pub

android点击消除当前item界面,然后在另一个listView的item中显示

问题描述 android点击消除当前item界面,然后在另一个listView的item中显示 android 中点击listview的Item中按钮后在当前listview中消除,并且传到另外一个listview中显示出来 解决方案 把item对应的data内容移除,另一个listview中加入对应数据. 两个listview都notifyDataSetChanged刷新 解决方案二: http://www.tuicool.com/articles/226rem 解决方案三: 这个应该好实现吧

Android ListView滑动过程中图片显示重复错乱闪烁的原因及解决方法

主要分析Android ListView滚动过程中图片显示重复.错乱.闪烁的原因及解决方法,顺带提及ListView的缓存机制. 1.原因分析 ListView item缓存机制:为了使得性能更优,ListView会缓存行item(某行对应的View).ListView通过adapter的getView函数获得每行的item.滑动过程中, a. 如果某行item已经滑出屏幕,若该item不在缓存内,则put进缓存,否则更新缓存: b. 获取滑入屏幕的行item之前会先判断缓存中是否有可用的ite

Android ListView滑动过程中图片显示重复错位闪烁问题解决

主要分析Android ListView滚动过程中图片显示重复.错乱.闪烁的原因及解决方法,顺带提及ListView的缓存机制.1.原因分析ListView item缓存机制:为了使得性能更优,ListView会缓存行item(某行对应的View).ListView通过adapter的getView函数获得每行的item.滑动过程中, a. 如果某行item已经滑出屏幕,若该item不在缓存内,则put进缓存,否则更新缓存: b. 获取滑入屏幕的行item之前会先判断缓存中是否有可用的item,

数据不显示-android ListView的item数据的显示问题

问题描述 android ListView的item数据的显示问题 获取到的应该显示的数据都可以打印出来,但是界面上只有时间显示了出来,其他数据都 没有显示出来,查看布局也没发现哪儿的问题,希望各位帮帮忙喽! item的数据未显示部分布局如下: android:layout_width="match_parent" android:layout_height="match_parent" android:layout_above="@id/rellay0&

高德地图中如何把map放到每个Listview的item中

问题描述 高德地图中如何把map放到每个Listview的item中 我的MainActivity的代码public class MainActivity extends FragmentActivity { private ListView listView; private BaseAdapter baseAdapter; private LayoutInflater mlayoutInflater; private AMap aMap; private MapView mapView; S