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); // } }
相关推荐
这就是“水平滚动ListView”(Horizontal ScrollView)的作用。它允许用户在水平方向上浏览一系列元素,常用于展示多张图片或者横向排列的数据列表。 HorizontalScrollView是Android SDK提供的一种布局容器,它允许...
水平滑动ListView是一种在Android开发中常见的视图组件,它扩展了传统的垂直滚动的ListView,提供了在水平方向上浏览和滑动数据集的功能。这种组件通常用于实现类似轮播图、横向菜单或滑动导航的效果,使用户可以...
在Android开发中,"android水平滑动listview"是指一种特殊的ListView组件,它允许用户水平滑动来浏览项目,而不是常见的垂直滚动。这种组件通常被称为HorizontalScrollView或HorizontalListView,是Android UI设计中...
水平滑动的ListView是一种在Android开发中常见的定制视图组件,它扩展了标准的垂直滚动的ListView,使得列表项能够沿水平方向滑动。这种组件通常用于展示横向数据集,如时间轴、轮播图片或者多列选项卡等场景。在...
在Android开发中,UI设计是至关重要的一环,而水平滑动的ListView,即Horizontal ListView,是一种常见的组件,用于展示横向滚动的数据列表。本篇将详细探讨这个专题,以帮助开发者更好地理解和实现这种特殊的布局。...
然而,通常ListView默认是垂直滚动的,而“ListView水平滑动分页”则是将ListView的功能扩展到支持水平滑动,以此来实现类似ViewPager的效果。这个特性使得开发者可以在有限的屏幕空间内展示更多的信息,增强用户...
水平ListView是一种在Android开发中常见的视图组件,与传统的垂直方向滚动的ListView不同,它允许用户在水平方向上浏览和滚动列表项。这个"水平ListView小demo"是为初学者设计的一个实例,可以帮助他们理解如何在...
ViewPager是Android SDK中的一个控件,用于显示多个全屏的页面,通常用于实现水平滑动的界面切换。它通过`PagerAdapter`来管理这些页面,每个页面可以是一个Fragment或Activity。在用户手势滑动时,ViewPager会自动...
标题提到的"ListView的item水平滑动(类QQ的左滑显示删除按钮)"就是这样一个功能,它允许用户通过水平滑动ListView的每一项来触发额外的操作,例如显示删除按钮。 实现这个功能的核心在于自定义一个Adapter,这是...
然而,标准的ListView默认是垂直滚动的,但有时候我们可能需要实现一个可以水平滚动的ListView,以适应特定的UI设计或交互需求。本篇文章将深入探讨如何在Android中创建一个可水平滚动的ListView,同时提供一些关键...
然而,在实际应用中,开发者可能会遇到一个常见的问题:当ListView没有Items时,水平滚动条不会自动显示,即使设置了允许水平滚动。这个问题可能会导致用户在预期有横向内容的情况下无法查看完整信息。 解决这个...
实现水平ListView,并且解决水平ListView在ScrollView中出现的滑动冲突。 博客地址:http://love-java-only.iteye.com/blog/2020004 联系邮箱:liucanwen517#gmail.com
然而,通常ListView是垂直滚动的,但有时候我们可能需要实现一个可以水平滑动的ListView,这在某些特定的界面设计中很有用,例如展示横向的卡片式布局或者横向滚动的菜单。标题“水平滑动的listview”所描述的,就是...
ListView水平显示横向滑动 自定义控件 实现ListView 水平显示 横向滑动效果!公司项目源码!
然而,有时我们希望在ListView的每一项中包含的TextView能够实现水平滚动效果,这样可以更好地展示宽度过大的文本内容。本教程将深入探讨如何实现ListView中的TextView水平滚动,并结合Adapter进行操作。 首先,...
在Android开发中,水平ListView(Horizontal ListView)是一种特殊布局方式,它允许用户在水平方向上滚动条目,而不是像默认的ListView那样垂直滚动。这种组件通常用于显示一系列水平排列的数据,比如时间轴、标签栏...
为了实现水平滑动,我们可以继承LinearLayout或RecyclerView,并重写其滚动逻辑,使其支持水平方向的滑动。在Adapter中,我们需要确保每个条目视图的宽度设置为足以容纳所有数据,这样在水平滑动时,用户就可以看到...
在本文中,我们将深入探讨如何实现标题中提到的“通过控制焦点横向滚动listview”以及“listview之间的联动效果”。首先,我们需要理解ListView的基本工作原理和相关概念。 ListView的工作原理基于Adapter模式,它...