`
wen742538485
  • 浏览: 237604 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Android支持横行滚动的ListView控件

阅读更多
package com.nmbb;

import android.content.Context;
import android.util.AttributeSet;
import android.view.GestureDetector.OnGestureListener;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.ListView;

/**
* 自定义支持横向滚动的ListView
* @author 农民伯伯
* @version 2011-12-4
*
*/
public class HVListView extends ListView {

/** 手势 */
private GestureDetector mGesture;
/** 列头 */
public LinearLayout mListHead;
/** 偏移坐标 */
private int mOffset = 0;
/** 屏幕宽度 */
private int screenWidth;

/** 构造函数 */
public HVListView(Context context, AttributeSet attrs) {
super(context, attrs);
mGesture = new GestureDetector(context, mOnGesture);
}

/** 分发触摸事件 */
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
super.dispatchTouchEvent(ev);
return mGesture.onTouchEvent(ev);
}

/** 手势 */
private OnGestureListener mOnGesture = new GestureDetector.SimpleOnGestureListener() {

@Override
public boolean onDown(MotionEvent e) {
return true;
}

@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
return false;
}

/** 滚动 */
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2,
float distanceX, float distanceY) {
synchronized (HVListView.this) {
int moveX = (int) distanceX;
int curX = mListHead.getScrollX();
int scrollWidth = getWidth();
int dx = moveX;
//控制越界问题
if (curX + moveX  scrollWidth)
dx = scrollWidth - getScreenWidth() - curX;

mOffset += dx;
//根据手势滚动Item视图
for (int i = 0, j = getChildCount(); i
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content"><textview android:id="@+id/item1" android:text="不动列头1" android:textsize="20.0sp" android:gravity="center" android:layout_width="100.0dip" android:layout_height="wrap_content"></textview><linearlayout android:orientation="horizontal" android:id="@+id/head" android:layout_width="1200.0dip" android:layout_height="wrap_content"><textview android:id="@+id/item2" android:text="不动列头2" android:textcolor="@android:color/black" android:textsize="20.0sp" android:singleline="true" android:gravity="center" android:layout_width="150.0dip" android:layout_height="wrap_content"></textview><textview android:id="@+id/item3" android:text="不动列头3" android:textsize="20.0sp" android:singleline="true" android:gravity="center" android:layout_width="150.0dip" android:layout_height="wrap_content"></textview><textview android:id="@+id/item4" android:text="不动列头4" android:textcolor="@android:color/black" android:textsize="20.0sp" android:singleline="true" android:gravity="center" android:layout_width="150.0dip" android:layout_height="wrap_content"></textview><textview android:id="@+id/item5" android:text="不动列头5" android:textsize="20.0sp" android:singleline="true" android:gravity="center" android:layout_width="150.0dip" android:layout_height="wrap_content"></textview><textview android:id="@+id/item6" android:text="不动列头6" android:textcolor="@android:color/black" android:textsize="20.0sp" android:singleline="true" android:gravity="center" android:layout_width="150.0dip" android:layout_height="wrap_content"></textview><textview android:id="@+id/item7" android:text="不动列头7" android:textsize="20.0sp" android:singleline="true" android:gravity="center" android:layout_width="150.0dip" android:layout_height="wrap_content"></textview><textview android:id="@+id/item8" android:text="不动列头8" android:textcolor="@android:color/black" android:textsize="20.0sp" android:singleline="true" android:gravity="center" android:layout_width="150.0dip" android:layout_height="wrap_content"></textview><textview android:id="@+id/item9" android:text="不动列头9" android:textsize="20.0sp" android:singleline="true" android:gravity="center" android:layout_width="150.0dip" android:layout_height="wrap_content"></textview></linearlayout></linearlayout>

main.xml
<?xml version="1.0" encoding="utf-8"?><linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:background="#eeffcc" android:layout_width="wrap_content" android:layout_height="fill_parent"><include layout="@layout/item"></include><com.nmbb.hvlistview android:id="@android:id/list" android:background="#FFB84D" android:fastscrollenabled="true" android:fadingedgelength="0.0sp" android:layout_width="1400.0dip" android:layout_height="fill_parent" android:drawselectorontop="false" android:cachecolorhint="@null" android:dividerheight="1.0dip"></com.nmbb.hvlistview></linearlayout>
分享到:
评论

相关推荐

    Android的支持横行滚动的ListView控件

    这个话题将深入探讨如何在Android中创建一个支持横行滚动的ListView。 首先,我们可以通过自定义ViewGroup实现这一功能。继承LinearLayout或HorizontalScrollView,重写onMeasure()和onLayout()方法,以确保子视图...

    Android_ListView控件基本用法

    ### Android ListView 控件基本用法详解 #### 一、引言 在Android应用开发中,经常需要展示大量的数据项,并且这些数据项通常具有相似的结构。为了有效地处理这类需求,Android提供了一种非常有用的控件——`...

    Android ListView控件基本用法

    * android:scrollbars:指定 ListView 控件滚动条的方向。 二、ListView 控件的布局 在上面的代码中,我们可以看到 ListView 控件被嵌套在一个 LinearLayout 中。这个 LinearLayout 的 ID 为 listLinearLayout,...

    安卓手机 ListView控件的三种使用方式

    在Android开发中,ListView是应用界面中非常常见的一种控件,它用于展示大量数据的列表形式,具有良好的滚动性能和可扩展性。本教程将详细讲解如何在安卓手机上使用ListView控件,从基础到进阶,通过四个案例来帮助...

    vba 日期控件和listview控件注册

    在WPS Office中,有时会遇到不同版本的内置控件不兼容的问题,比如日期控件和ListView控件。本教程将详细介绍如何在VBA中注册并使用这些控件,以克服兼容性问题。 1. **VBA日期控件**: VBA中的日期控件通常指的是...

    VBA实战系列(ListView控件)

    - **功能**:ListView控件可以用来展示表格形式的数据,并支持多种视图模式(如图标、列表、详细信息等)。 - **优势**:与传统的表格控件相比,ListView控件提供了更多的定制选项,包括自定义列宽、对齐方式等,...

    Android ListView控件显示数据库中图片

    Android ListView 控件显示数据库中图片 Android ListView 控件是 Android 开发中常用的控件之一,但是在创建 ListView 时,总是感觉步骤繁琐,这里对其进行总结,方便查阅。程序的效果是实现一个显示联系人的简单...

    Android中的ListView控件学习

    在Android开发中,ListView是一个非常重要的控件,它允许开发者在一个垂直滚动的列表中展示大量数据。本篇文章将深入探讨ListView的基本用法、工作原理以及优化策略,旨在帮助你掌握这个核心组件。 **1. ListView的...

    listview控件可有4种不同的视图显示方法 (1).docx

    ListView 控件可有 4 种不同的视图显示方法 ListView 控件是 Windows 操作系统中的一种常用控件,能够显示大量的数据,并提供了多种视图显示方法。根据不同的应用场景,可以选择适合的视图显示方法。 一、视图显示...

    Listview控件用法,listview控件,.net控件,.net listview控件用法

    ListView控件支持各种鼠标和键盘事件,如`MouseClick`, `MouseMove`, `KeyDown`, `KeyUp`等,可以用来处理用户的交互。 8. 分组功能 自.NET Framework 2.0起,ListView支持分组功能,通过`Groups`属性可以创建和...

    android demo,自定义支持横向滚动的ListView。

    这个“android demo,自定义支持横向滚动的ListView”正是为了解决这个问题,让我们深入探讨相关知识点。 首先,要实现横向滚动的ListView,我们需要了解并掌握以下几个关键点: 1. **自定义ViewGroup**: 自定义...

    C#listView控件的使用

    在C#编程中,ListView控件是一个非常常用且功能强大的组件,主要用于展示数据集,它提供了多种视图模式,如大图标、小图标等,并支持添加、删除项以及复选框功能。本教程将深入讲解如何利用C#的ListView控件进行开发...

    演示Android的ListView控件的使用

    环境:Windows XP SP3、JDK 1.6、Android SDK...目的:熟悉ListView控件的用法--使用ListView必须让Activity继承ListActivity类,并且在main.xml布局描述文档中,ListView类的android.id必须是"@+id/android:list”值。

    c#读取listview控件内容

    在C#编程中,ListView控件是一个非常常用的数据展示组件,它允许开发者以列表形式展示数据,支持多种视图模式,如图标、列表、详细信息等。本篇将深入探讨如何在C#中读取ListView控件的内容,以及如何通过Spy++工具...

    VB 读取Excel表格数据并在ListView控件中显示

    在VB(Visual Basic)编程中,常常需要处理与Excel数据的交互,比如读取Excel表格中的数据并将其显示在ListView控件中。ListView控件是一个非常实用的组件,可以用来展示列表形式的数据,包括多种视图模式,如图标、...

    Android中自定义ListView控件实现下拉刷新

    在 Android 中,实现下拉刷新需要自定义ListView控件,重写ListView的OnScrollListener接口,以便在ListView滚动时检测用户的下拉操作。同时,需要在ListView的头部添加一个View,用于显示刷新状态。 在本文中,...

    android控件应用 自定义的ListView控件,下拉刷新上拉加载更多

    在Android开发中,ListView是一种非常常用的控件,用于展示大量数据列表。自定义ListView不仅可以满足基本的显示需求,还能实现更多的交互效果,如下拉刷新和上拉加载更多功能。这两种功能在现今的移动应用中非常...

    Android 类似于windows listview的控件

    在Android开发中,ListView是一种非常常见的控件,它与Windows中的ListView控件有着类似的功能,用于展示可滚动的多行数据列表。ListView以其高度可定制性和高效的数据处理能力,成为了展示大量数据的理想选择。本篇...

    listView控件综合应用

    ListView控件在VB6.0中是一个非常重要的可视化组件,它允许程序员以列表形式展示数据,支持多种视图模式,如大图标、小图标、列表和详细信息等。本教程将深入探讨ListView控件的综合应用,旨在帮助初学者更好地理解...

Global site tag (gtag.js) - Google Analytics