package com.m4399.gamecenter.widget; import com.m4399.gamecenter.util.LogTag; import android.content.Context; import android.util.AttributeSet; import android.view.GestureDetector; import android.view.GestureDetector.SimpleOnGestureListener; import android.view.MotionEvent; import android.view.View; import android.widget.ListView; /** * 解决横向滑动控件在ListView中的减点问题的ListView * * @author LRChao * @date 2013-3-6 * */ public class HorizontalScrollListView extends ListView { private final String TAG = "HorizontalScrollListView"; private GestureDetector mGestureDetector; View.OnTouchListener mGestureListener; public HorizontalScrollListView(Context context) { super(context); } public HorizontalScrollListView(Context context, AttributeSet attrs) { super(context, attrs); mGestureDetector = new GestureDetector(new YScrollDetector()); setFadingEdgeLength(0); } public HorizontalScrollListView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Override public boolean onInterceptTouchEvent(MotionEvent ev) { // getParent().requestDisallowInterceptTouchEvent(true); // switch (ev.getAction()) { // case MotionEvent.ACTION_DOWN: // LogTag.showTAG_e("onInterceptTouchEvent", "ACTION_DOWN"); // break; // case MotionEvent.ACTION_UP: // LogTag.showTAG_e("onInterceptTouchEvent", "ACTION_UP"); // break; // case MotionEvent.ACTION_MOVE: // LogTag.showTAG_e("onInterceptTouchEvent", "ACTION_MOVE"); // break; // // default: // break; // } LogTag.showTAG_e("onInterceptTouchEvent", super.onInterceptTouchEvent(ev) || mGestureDetector.onTouchEvent(ev)); return super.onInterceptTouchEvent(ev) || mGestureDetector.onTouchEvent(ev); } class YScrollDetector extends SimpleOnGestureListener { @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { if(distanceY !=0 && distanceX != 0){ if (Math.abs(distanceY) >= Math.abs(distanceX)) { return true; } return false; } return false; } } // @Override // public boolean onTouchEvent(MotionEvent ev) { // switch (ev.getAction()) { // case MotionEvent.ACTION_DOWN: // LogTag.showTAG_e("onTouchEvent", "ACTION_DOWN"); // break; // case MotionEvent.ACTION_UP: // LogTag.showTAG_e("onTouchEvent", "ACTION_UP"); // break; // case MotionEvent.ACTION_MOVE: // LogTag.showTAG_e("onTouchEvent", "ACTION_MOVE"); // break; // // // default: // break; // } // LogTag.showTAG_e("onTouchEvent", super.onTouchEvent(ev)); // LogTag.showTAG_e("onTouchEvent", super.onTouchEvent(ev)|| mGestureDetector.onTouchEvent(ev)); // return super.onTouchEvent(ev); // } }
相关推荐
Android 自定义 HorizontalScrollView,水平滑动的Listview,一屏可以显示多个张图片,解决ScrollView上下滚动事件冲突问题。
可以水平滑动的ListView 凑字数凑字数
Android Horizontal ListView
大神写的自定义的listView,拿过来可以直接使用
ListView水平滑动分页,更改属性也可垂直滑动分页,但滑动事件有所冲突
实现水平ListView,并且解决水平ListView在ScrollView中出现的滑动冲突。 博客地址:http://love-java-only.iteye.com/blog/2020004 联系邮箱:liucanwen517#gmail.com
搜集整理 android可水平滚动的 ListView
ListView水平显示横向滑动 自定义控件 实现ListView 水平显示 横向滑动效果!公司项目源码!
listview textview 水平滚动,用了Adapter,一次滚动两个textview
NULL 博文链接:https://rensanning.iteye.com/blog/2201789
该demo简单的实现了listview的水平滑动,对初学者有很大的用处
[WPF]解决ListView在没有Items时,水平滚动条不出现的问题
水平 横线 listView 嵌套在 ScrollView中 已经处理滑动卡和嵌套在scrollview 中显示的相关问题
横向滚动的ListView,包含示例代码
是一个水平横向滑动的listview的使用,适合项目中开发的需求
通过在HorizontalScrollView中嵌套ListView控件,实现ListView的水平滑动效果
水平listview+wheelview+滑动条 demo
HorizontalScrollView和GridView结合,实现ListView效果。