Android双列滑动表格(双表头不动)
※效果
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双列滑动表格(双表头不动)的更多相关文章
- JAVA双列集合HashMap
HashMap 双列集合HashMap是属于java集合框架3大类接口的Map类, Map接口储存一组成对的键-值对象,提供key(键)到value(值)的映射.Map中的key不要求有序,不允许 ...
- Android 摇一摇之双甩功能
Android 摇一摇之双甩功能 最近做一个摇一摇的功能 网上相关代码很多 但是这次的需求有点奇葩 要求是摇两次才生效 看起来好像很简单 但真正要做遇到的问题还是很多 时间限制 机型灵敏性 摇动的方式 ...
- (10)集合之双列集合Map,HashMap,TreeMap
Map中的元素是两个对象,一个对象作为键,一个对象作为值.键不可以重复,但是值可以重复. 看顶层共性方法找子类特有对象. Map与Collection在集合框架中属并列存在 Map存储的是键值对 Ma ...
- 双列集合Map
1.双列集合Map,就是存储key-value的键值对. 2.hashMap中键必须唯一,值可以不唯一. 3.主要方法:put添加数据 getKey---通过key获取数据 keySet- ...
- Map集合——双列集合
双列集合<k, v> Map: Map 和 HashMap是无序的: LinkedHashMap是有序的: HashMap & LinkedHashMap: put方法: 其中,可 ...
- C#之单列双列集合绑定数据
---恢复内容开始--- 1.单列集合绑定方式 davList.DataSource=new BindingList<类型名>(集合名); 2.双列集合绑定方式 BindingSource ...
- 双列集合Map的嵌套遍历
双列集合Map的嵌套使用,例如HashMap中还有一个HashMap,这样的集合遍历起来稍微有点儿复杂.例如一个集合:HashMap<Integer,HashMap<String,Inte ...
- java oop 单列 双列 集合, 迭代器 的使用和说明
一.集合(Collection) (1)集合的由来? 我们学习的是Java -- 面向对象 -- 操作很多对象 -- 存储 -- 容器(数组和StringBuffer) -- 数组 而数组的长度固定, ...
- Properties -IO相关的双列集合类
IO相关的集合类 java.util.Properties集合 extends hashtable(淘汰) Properties类表示了一个持久的属性集.Properties可保存流中或从流中加载 P ...
随机推荐
- billu_b0x靶场刷题
https://www.vulnhub.com/ 里面有很多安全环境,只要下载相关镜像,在虚拟机上面搭建运行就可以练习对应靶场了. 第一步.信息收集 nmap扫描内网开放80端口的存活主机 nmap ...
- 油猴 tamperMonkey 在百度首页 添加自己的自定义链接
发现 GM_addStyle 函数不能用了,从写加载css函数. 剩下找个定位 添加内容 就很简单了. // ==UserScript== // @name helloWorld // @namesp ...
- [ERROR ] Error parsing configuration file: /etc/salt/minion - conf should be a document, not <type 'str'>.
错误信息 [ERROR ] Error parsing configuration file: /etc/salt/minion - conf should be a document, not &l ...
- 出现了错误。详细消息: 3 uncommitted changes would be overwritten by merge
merge manual中有一条警告: 出现了错误.详细消息: 3 uncommitted changes would be overwritten by merge 有未提交修改情况下,不要执行me ...
- image的resizeMode属性
Image组件必须在样式中声明图片的宽和高.如果没有声明,则图片将不会被呈现在界面上. 我们一般将Image定义的宽和高乘以当前运行环境的像素密度称为Image的实际宽高. 当Image的实际宽 ...
- 含有通配符*的字符匹配(C语言)
含有通配符的字符匹配,采用贪心算法 //1 -> true //0 -> false int IsMatch(const char* reg, const char *str) { int ...
- 几个非常实用的JQuery代码片段
jQuery是一个兼容多浏览器的javascript库,核心理念是write less,do more(写得更少,做得更多).jQuery使用户能更方便地处理HTML(标准通用标记语言下的一个应用). ...
- Django 1.8.11 REST风格路由
# -*- coding: utf-8 -*- """ Tencent is pleased to support the open source community b ...
- You must specify a valid lifecycle phase or a goal in the format <plugin-prefix>:<goal> or <plugin-group-id>:<plugin-artifact-id>[:<plugin-version>]:<goal>. Available lifecycle phases are: validate, i
[ERROR] Unknown lifecycle phase "mvn". You must specify a valid lifecycle phase or a goal ...
- pwnable.kr cmd2之write up
来看一下源代码: #include <stdio.h> #include <string.h> int filter(char* cmd){ ; r += strstr(cmd ...