Android ScrollView和OnTouch冲突解决(最新)
来源:互联网 发布:淘宝发布宝贝没有品牌 编辑:程序博客网 时间:2024/06/08 12:10
Android ScrollView和OnTouch冲突解决(最新)
好了,思想+代码。
看了好多别人写的解决方法,自定义ScrollView
代码如下:
package com.aierjun.woxiangwoxiang.widget;import android.content.Context;import android.util.AttributeSet;import android.view.MotionEvent;import android.widget.ScrollView;/** * Created by aierJun on 2017/1/16. */public class MyScrollView extends ScrollView { public MyScrollView(Context context) { super(context); } public MyScrollView(Context context, AttributeSet attrs) { super(context, attrs); } public MyScrollView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } //这个方法如果返回 true 的话 两个手指移动,启动一个按下的手指的移动不能被传播出去。 public boolean onInterceptTouchEvent(MotionEvent event) { super.onInterceptTouchEvent(event); return false; } //这个方法如果 true 则整个Activity 的 onTouchEvent() 不会被系统回调 但当true是Scrollview的滑动失效 public boolean onTouchEvent(MotionEvent event) { super.onTouchEvent(event); return false; }}
注意:这个方法个人尝试实现不了,但这里面标注的两个方法对考虑很有帮助。
然后找寻方法时我发现了一个方法OnTouchListener:
看了资料分析:
地址:http://blog.csdn.net/huiguixian/article/details/22193977
点击直接跳转地址
综合来讲:
onTouchListener的onTouch方法优先级比onTouchEvent高,会先触发。
假如onTouch方法返回false会接着触发onTouchEvent,反之onTouchEvent方法不会被调用。
内置诸如click事件的实现等等都基于onTouchEvent,假如onTouch返回true,这些事件将不会被触发。
最后实现
代码如下:
/** * Created by aierJun on 2017/1/16. */public class MainActivity extends Activity { private ScrollView scrollView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findView(); initView(); } private void findView() { scrollView= (ScrollView) findViewById(R.id.scrollView); } private void initView() { scrollView.setOnTouchListener(onTouchListener); } float startY; float endY; View.OnTouchListener onTouchListener=new View.OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent motionEvent) { switch (motionEvent.getAction()){ case MotionEvent.ACTION_DOWN: startY=motionEvent.getY(); break; case MotionEvent.ACTION_UP: endY=motionEvent.getY(); break; default: if (endY-startY>50){ }else { } } //这里的false和前面的一样 return false; } };}
转载请注明出处,谢谢!
1 0
- Android ScrollView和OnTouch冲突解决(最新)
- 解决Android ScrollView子视图的onTouch事件冲突
- Android onTouch事件与ScrollView冲突
- Android:解决ScrollView 和 ListView 的冲突
- android webview setBuiltInZoomControls 与 onTouch 冲突解决
- android webview setBuiltInZoomControls 与 onTouch 冲突解决
- Android onTouch、OnLongClick、onClick及ScrollView滑动事件冲突
- Android onTouch、OnLongClick、onClick及ScrollView滑动事件冲突
- Android onTouch、OnLongClick、onClick及ScrollView滑动事件冲突
- android ontouch和onclick冲突处理
- 解决ScrollView和GridView冲突
- ScrollView和ListView冲突解决
- ScrollView和listView冲突解决
- Android 解决ListView 和 ScrollView 共存冲突的问题
- Android 解决ListView 和 ScrollView 共存冲突的问题
- Android 解决ListView 和 ScrollView 共存冲突的问题
- Android 解决ListView 和 ScrollView 共存冲突的问题
- Android 解决ListView 和 ScrollView 共存冲突的问题
- app外包开发注意事项大全『最新』
- 图片库优化
- ubuntu 14.04中elasticsearch 2.3 + nginx
- Git 提交模板 Commit Template
- 打砖块Demo
- Android ScrollView和OnTouch冲突解决(最新)
- 执行 logcat 命令引发的EBUSY device or resource busy
- unity3d_坦克射炮弹
- Spark基础入门(三)--------作业执行方式
- 超强执行力提升
- mvc:interceptors 完全拦截问题
- Linux命令之ls命令详解
- u-boot怎样生成spl
- 初学者学习python