Android ScrollView和OnTouch冲突解决(最新)
2017-01-16 19:21
465 查看
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; } }; }
转载请注明出处,谢谢!
相关文章推荐
- Android 解决ListView 和 ScrollView 共存冲突的问题
- 【Android】ScrollView和GestureDetector触碰事件冲突的解决
- 解决Android布局中ScrollView与ListView的冲突
- Android 解决ListView 和 ScrollView 共存冲突的问题
- Android 解决ListView 和 ScrollView 共存冲突的问题
- Android 解决ListView 和 ScrollView 共存冲突的问题
- Android 解决ListView 和 ScrollView 共存冲突的问题
- [Android实例] Android 解决ListView 和 ScrollView 共存冲突的问题
- android webview setBuiltInZoomControls 与 onTouch 冲突解决
- Android笔记: 解决ScrollView嵌套ListView的冲突方法
- Android 解决ListView 和 ScrollView 共存冲突的问题
- android ListView 与 ScrollView 共存冲突解决
- android 自定义ScrollView实现反弹效果(以及解决和ListView之间的冲突) .
- Android 解决Gallery下ScrollView滑动事件冲突
- Android 解决ListView 和 ScrollView 共存冲突的问题(另一种解决方案)
- Android 解决ListView 和 ScrollView 共存冲突的问题
- 解决Android布局中ScrollView与ListView的冲突
- android 自定义ScrollView实现反弹效果(以及解决和ListView之间的冲突)
- Android 解决ListView 和 ScrollView 共存冲突的问题
- Android 解决Gallery下ScrollView滑动事件冲突