android开发之横向滚动/竖向滚动的ListView(固定列头)

2016-02-19 10:49 195 1 收藏

今天给大家分享的是由图老师小编精心为您推荐的android开发之横向滚动/竖向滚动的ListView(固定列头),喜欢的朋友可以分享一下,也算是给小编一份支持,大家都不容易啊!

【 tulaoshi.com - 编程语言 】

由于项目需要,我们需要一个可以横向滚动的,又可以竖向滚动的 表格。而且又要考虑大数据量(行)的展示视图。经过几天的研究终于搞定,做了一个演示。贴图如下:

      

 好吧。让我们看思路是什么样的:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

 

1. 上下滚动直接使用 listView来实现。

2. 左右滚动使用HorizontalScrollView,来处理滚动。我写一个类MyHScrollView继承 自它。

    2.1 . ListView里的每行(row)分为 两部分,不滚动的和可滚动的区域。比如本demo的第一列,就是静态的。而后面的所有列都是可以滚动的。

    2.2.  我不想自己计算滚动的距离,因为还要处理越界,坐标等等。于是我使用 OnTouch事件来处理。于是我们必须搞懂OnTouch的运行机制。了解 请google it.

    2.3.  列头 (显示列名的那一行)是固定的,不会上下滚动 。但可以左右滚动。而且它在左右滚动时,所有的 数据行(row) ,都要与其一起左右滚动。那么我们需要监听 列头             (控件)的滚动变化消息(事件),并将消息广播给所有的 数据行。这些数据行收到消息后,调整自己的滚动条位置以保持和 列头 的滚动距离一致。

3. 那么整个流程基本是这样的。 

    3.1, 捕获 列头(容器控件,包含固定和可滚动控件)的 onTouch事件(拖动事件),不处理。而分发给 “列头里的 可滚动部分的控件”,该控件是一个HorizontalScrollView的        子类,           当它收到这些 拖动事件时,就产生了固定的效果

    3.2. 捕获 数据行 区 的控件(该控件其实就是ListView控件 )的OnTouch事件,不处理,同样分发给  “列头里的 可滚动部分的控件”。 这两步,就完成了一个小效果,点击表      格的头部和体部都能移动(滚动)行。

    3.3.  我写了一个 HorizontalScrollView的子类,重载 onScrollChanged 方法,该方法在 滚动之后执行,相当于“滚动后的事件”,我写了一个观察者(设计模式)的类。每次       滚动后,都通知给 观察者。观察者再通知给它的订阅者(那些需要同时滚动的行里面的 滚动控件)。

    3.4.   当ListView创建行时,让这些行都订阅 上一步 的观察者。当 收到消息后,调整自身的滚动条位置以保持和 列头 的滚动条位置一致。

 代码比较多,就不贴了。提供代码下载。

源代码下载。 

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

来源:http://www.tulaoshi.com/n/20160219/1595849.html

延伸阅读
标签: Web开发
程序代码 !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" html xmlns="http://www.w3.org/1999/xhtml" head meta http-equiv="Content-Type" content="text/html; charset=utf-8" / meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" / title滚动新闻类...
标签: Web开发
12345678910111213141516171819202122232425262728
标签: Web开发
代码如下: (function($){ $.fn.extend({ rollList:function(option){ option=$.extend({ direction:"up", step:1, time:23 },option); var step_coe,scroll_coe,score_coe; if(option.direction=="up") { step_coe=1; scroll_coe=1; score_coe=1; }else { step_coe=-1; scroll_coe=-1; score_coe=0; } return this.each(...
标签: Web开发
html headtitle层滚动条DIY - Powered by yexj00/title style !-- *{ font-size: 12px} -- /style script language="Javascript" !-- function $(obj){ return document.all[obj]; } function setbarHeight(){ $("scroll_bar").style.height=($("scroll_content").clientHeight)/($("scroll_content&q...
在VB中可以用图片框来显示图像,若图片框放不下整个图像,通常只能显示图像的一部分,但是图片框没有提供滚动控制,无法浏览图像的其余部分。其实通过VB所提供的工具,可以非常方便地构造出图片框的滚动控制。其思想是提供一个显示区域和一整个图像区,将后者装在前者区域内,当用户改变滚动条位置时,通过程序来改变图像区的Top和Left的值,达...

经验教程

525

收藏

62
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部