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

 前沿:有时候,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的解决办法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索scrollview
, 拦截
scrollow嵌套listview
scrollow嵌套listview、scroll嵌套listview、listview嵌套webview、scroview嵌套listview、listview嵌套textview,以便于您获取更多的相关知识。

时间: 2024-08-04 14:10:27

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

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

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

解决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在view.requestFocus(0)返回false的解决办法_Android

我们有时候想让listview的第一行自动获取到焦点,我们就会使用view.requestFocus(0)来操作,而有时候并不生效,debug后显示rerurn为false. 这是因为我们获取焦点太早,listview控件还为加载完毕.可以尝试一下方法解决: listview.post(new Runnable(){ @Override public void run(){ view.requestFocus(0); } }); 以上所述是小编给大家介绍的Android在view.request

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

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

Android 关于“NetworkOnMainThreadException”问题的原因分析及解决办法_Android

网络收集的原因如下,以及解决办法: 我补充总结一下: 解决办法一: 在操作网络类(socket连接)的activity的protected void onCreate(Bundle savedInstanceState)函数后面加上下面的代码.在super.onCreate(savedInstanceState);前面加. StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder() .detectDiskReads().det

Android应用的LinearLayout中嵌套RelativeLayout的布局用法_Android

想将Button和ListView分别放在屏幕的一左一右. 单纯使用android:gravity和android:layout_gravity不成功. 于是涉及到RelativeLayout. 关键为:android:layout_alignParentRight="true", android:layout_alignParentLeft="true": <?xml version="1.0" encoding="utf-8&

Android Studio gradle 编译提示‘default not found’ 解决办法_Android

在导入studio工程的时候,进行sync的时候,提示Error:Configuration with name 'default' not found. 之前由于对gradle不熟悉,所以没有找到原因,其实也是偷懒,没有认真去排查问题,今天又遇到了,就折腾了会,把所有的配置文件都打开看,最终解决问题了,发现尽然是个低级的不能低级的问题,故记录下,警醒自己. 1.打开settings.gradle发现里面有很多个include ':app'这样的include,然而发现在工程的目录下面根本没有i

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 解决方案三: 这个应该好实现吧