※效果

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGluZ2xvbmd4aW4yNA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

※使用方法


package com.cd.slidetest;

import android.os.Bundle;
import android.app.Activity;
import android.graphics.Color;
import android.view.GestureDetector;
import android.view.Menu;
import android.view.MotionEvent;
import android.view.GestureDetector.SimpleOnGestureListener;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import android.widget.ScrollView; public class MainActivity extends Activity implements OnScrollChangedListener{ private GestureDetector mGestureDetector = null;
private HScrollView mItemRoom = null;
private ScrollView mVertical = null;
private HScrollView mTimeItem = null;
private LinearLayout mContain = null;
@SuppressWarnings("deprecation")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mGestureDetector = new GestureDetector(mGestureListener);
makeItems();
setContentView(mContain); } @Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
} private void makeItems(){
mItemRoom = new HScrollView(this, mGestureDetector);
mItemRoom.setListener(this);
LinearLayout VLayout = new LinearLayout(this);
VLayout.setOrientation(LinearLayout.VERTICAL); for(int i = 0;i < 20;i++){
LinearLayout HLayout = new LinearLayout(this);
for(int j = 0;j < 10;j++){
TextItem item = new TextItem(this);
item.setText(i*10+j + "vh");
item.setBackgroundColor(Color.LTGRAY);
LinearLayout.LayoutParams params = new LayoutParams(100,70);
HLayout.addView(item, params);
}
VLayout.addView(HLayout);
} mItemRoom.addView(VLayout); mVertical = new ScrollView(this);
LinearLayout hlayout = new LinearLayout(this);
LinearLayout vlayout = new LinearLayout(this);
vlayout.setOrientation(LinearLayout.VERTICAL);
for(int i = 0;i < 20;i++){
TextItem item = new TextItem(this);
item.setBackgroundColor(Color.BLUE);
item.setText(i + "v");
LinearLayout.LayoutParams params = new LayoutParams(100,70);
vlayout.addView(item, params);
}
hlayout.addView(vlayout);
hlayout.addView(mItemRoom); mVertical.addView(hlayout); LinearLayout tophlayout = new LinearLayout(this);
mTimeItem = new HScrollView(this, mGestureDetector);
mTimeItem.setListener(this);
LinearLayout layout = new LinearLayout(this);
for(int i = 0;i < 10;i++){
TextItem item = new TextItem(this);
item.setText(i + "h");
item.setBackgroundColor(Color.GREEN);
LinearLayout.LayoutParams params = new LayoutParams(100,70);
layout.addView(item,params);
}
mTimeItem.addView(layout);
TextItem item = new TextItem(this);
item.setBackgroundColor(Color.RED);
LinearLayout.LayoutParams params = new LayoutParams(100,70);
tophlayout.addView(item,params);
tophlayout.addView(mTimeItem); mContain = new LinearLayout(this);
mContain.setOrientation(LinearLayout.VERTICAL);
mContain.addView(tophlayout);
mContain.addView(mVertical);
} private SimpleOnGestureListener mGestureListener = new SimpleOnGestureListener(){ @Override
public boolean onScroll(MotionEvent e1, MotionEvent e2,
float distanceX, float distanceY) {
if(Math.abs(distanceX) > Math.abs(distanceY)) {
return true;
}
return false;
} };
@Override
public void onScrollChanged(HScrollView scroll, int x, int y, int oldx,
int oldy) {
if(scroll == mItemRoom){
mTimeItem.scrollTo(x, y);
}else if(scroll == mTimeItem){
mItemRoom.scrollTo(x, y);
} }
}

※下载地址

http://download.csdn.net/detail/u010785585/8062787

Android双列滑动表格(双表头不动)的更多相关文章

  1. JAVA双列集合HashMap

    HashMap 双列集合HashMap是属于java集合框架3大类接口的Map类,   Map接口储存一组成对的键-值对象,提供key(键)到value(值)的映射.Map中的key不要求有序,不允许 ...

  2. Android 摇一摇之双甩功能

    Android 摇一摇之双甩功能 最近做一个摇一摇的功能 网上相关代码很多 但是这次的需求有点奇葩 要求是摇两次才生效 看起来好像很简单 但真正要做遇到的问题还是很多 时间限制 机型灵敏性 摇动的方式 ...

  3. (10)集合之双列集合Map,HashMap,TreeMap

    Map中的元素是两个对象,一个对象作为键,一个对象作为值.键不可以重复,但是值可以重复. 看顶层共性方法找子类特有对象. Map与Collection在集合框架中属并列存在 Map存储的是键值对 Ma ...

  4. 双列集合Map

    1.双列集合Map,就是存储key-value的键值对. 2.hashMap中键必须唯一,值可以不唯一. 3.主要方法:put添加数据    getKey---通过key获取数据    keySet- ...

  5. Map集合——双列集合

    双列集合<k, v> Map: Map 和 HashMap是无序的: LinkedHashMap是有序的: HashMap & LinkedHashMap: put方法: 其中,可 ...

  6. C#之单列双列集合绑定数据

    ---恢复内容开始--- 1.单列集合绑定方式 davList.DataSource=new BindingList<类型名>(集合名); 2.双列集合绑定方式 BindingSource ...

  7. 双列集合Map的嵌套遍历

    双列集合Map的嵌套使用,例如HashMap中还有一个HashMap,这样的集合遍历起来稍微有点儿复杂.例如一个集合:HashMap<Integer,HashMap<String,Inte ...

  8. java oop 单列 双列 集合, 迭代器 的使用和说明

    一.集合(Collection) (1)集合的由来? 我们学习的是Java -- 面向对象 -- 操作很多对象 -- 存储 -- 容器(数组和StringBuffer) -- 数组 而数组的长度固定, ...

  9. Properties -IO相关的双列集合类

    IO相关的集合类 java.util.Properties集合 extends hashtable(淘汰) Properties类表示了一个持久的属性集.Properties可保存流中或从流中加载 P ...

随机推荐

  1. merge dict key

    #!/usr/local/python # -*- coding:utf-8 -*-user_dict = {'python': 23, 'Python': 51, '机器':10, 'PYTHON' ...

  2. Mac下Apache服务器的初步搭建

    回送地址  127.0.0.1(localhost)  ping 这个地址可以检测网卡是否正常 ping 本地地址如果不正常说明网线挂了   // 启动 sudo apachectl -k start ...

  3. Swift中的init方法

    摘要:Swift有着超级严格的初始化方法,不仅强化了designated初始化方法的地位,所有不加修饰的init方法都需要在方法中确保非Optional的实例变量被赋值初始化,而在子类中,也强制调用s ...

  4. IOS学习笔记37——ViewController生命周期详解

    在我之前的学习笔记中讨论过ViewController,过了这么久,对它也有了新的认识和体会,ViewController是我们在开发过程中碰到最多的朋友,今天就来好好认识一下它.ViewContro ...

  5. POJ-2442-Sequence(二叉堆)

    POJ-2442 Description Given m sequences, each contains n non-negative integer. Now we may select one ...

  6. 提高CPU使用率

    某些特殊时候,需要提升下cpu的利用率,此时……………………需要一个极其简单的脚本来完成! #!/bin/bash while (true);do { for i in $(seq 100000 10 ...

  7. MySQL配置索引页的合并阈值

    MySQL配置索引页的合并阈值 如果删除行或者通过UPDATE操作缩短行 可以为索引页面配置MERGE_THRESHOLD值. 当delete与update缩短了行长度时,索引页的"page ...

  8. Java后端技术微信交流群!工作、学习、技术、资源等!期待你的加入!

    <Java后端技术>专注Java相关技术:SSM.Spring全家桶.微服务.MySQL.MyCat.集群.分布式.中间件.Linux.网络.多线程,偶尔讲点运维Jenkins.Nexus ...

  9. 使用js获取页面的各种高度

    使用js获取相关高度: 获取网页被滚动条卷去的高度——兼容写法: scrollHeight = documen.body.scrollTop || document.documentElement.s ...

  10. C#中如何使用正则表达式

    [草稿版本,谨慎阅读] 参考文档:正则表达式30分钟入门教程 如需系统学习正则表达式内容,请移步上述教程. 正则表达式按照指定的规则来匹配字符或字符串.'.' ' \b' ' \d'等等被称为是正则表 ...