可以正确显示表格线的Grid item view
Android上要显示一个表格,没有Swing那么专门的JTable可用。
搜了下,一般用GridView,有诸多不便和需要自己实现的地方:
跟ListView一样的Adapter,getView的时候要把表格的二维空间转换成一维来返回。如果表格要画线,问题就来了,返回的Cell View处在一维中的,压根不知道自己在表格中的位置,所以不知道要绘制自己的哪根边界线。于是我封装了一个Cell View的View holder,传入count, column count, position,会根据自己所处的位置自动隐藏/展示上下左右四条边界线。
所有代码在Gist: Grid item view holder for GirdView which show the border lines properly.
https://gist.github.com/Viyu/3af499b51318128d1aab
核心代码:
public void setLineVisible(int totalCount, int columnCount, int position) {
// 只有一个item
if (totalCount < 2) {
mTopLine.setVisibility(View.VISIBLE);
mBottomLine.setVisibility(View.VISIBLE);
mLeftLine.setVisibility(View.VISIBLE);
mRightLine.setVisibility(View.VISIBLE);
return;
}
// 只有一行
if (totalCount == columnCount) {
mTopLine.setVisibility(View.VISIBLE);
mBottomLine.setVisibility(View.VISIBLE);
mRightLine.setVisibility(View.VISIBLE);
if (position == 0) {// 第一个
mLeftLine.setVisibility(View.VISIBLE);
} else {// 后面的
mLeftLine.setVisibility(View.GONE);
}
return;
}
// 只有一列
if (columnCount < 2) {
mLeftLine.setVisibility(View.VISIBLE);
mRightLine.setVisibility(View.VISIBLE);
mBottomLine.setVisibility(View.VISIBLE);
if (position == 0) {// 第一个
mTopLine.setVisibility(View.VISIBLE);
} else {// 后面的
mTopLine.setVisibility(View.GONE);
}
return;
}
// 至少两行两列
if (position == 0) {// 0, 0
mLeftLine.setVisibility(View.VISIBLE);
mRightLine.setVisibility(View.VISIBLE);
mTopLine.setVisibility(View.VISIBLE);
mBottomLine.setVisibility(View.VISIBLE);
} else if (position / columnCount == 0) {// 第一行
mLeftLine.setVisibility(View.GONE);
mRightLine.setVisibility(View.VISIBLE);
mTopLine.setVisibility(View.VISIBLE);
mBottomLine.setVisibility(View.VISIBLE);
} else if(position % columnCount == 0) {//第一列
mLeftLine.setVisibility(View.VISIBLE);
mRightLine.setVisibility(View.VISIBLE);
mTopLine.setVisibility(View.GONE);
mBottomLine.setVisibility(View.VISIBLE);
} else {//其他的
mLeftLine.setVisibility(View.GONE);
mRightLine.setVisibility(View.VISIBLE);
mTopLine.setVisibility(View.GONE);
mBottomLine.setVisibility(View.VISIBLE);
}
}
可以正确显示表格线的Grid item view的更多相关文章
- 使用Windows驱动的虚拟打印机,打印Excel表格无表格线问题解决(2)
测试: 经前天的测试,最终还是没有明显的定夺到底是驱动的问题,还是打印机的问题.但是按照可能性来排查,最明显的一点就是其他测试环境不变的情况下增加一张图片,就可以打印出表格线,我始终觉得这里是突破点, ...
- easyui学习笔记7—在手风琴中显示表格
在这一篇中我们看看如何在手风琴里面显示表格数据的. 1.先看看引用的资源 <link rel="stylesheet" type="text/css" h ...
- Html报表用Excel打开保持表格线【Html报表模板】
注:本人调试的最简版,前两处红色部分是为了输出Excel表格线:x:str表示输出为文本样式,避免被输出为科学计数法. <!DOCTYPE html PUBLIC "-//W3C//D ...
- 用CSS正确显示人民币符号的HTML转义字符
做电子商务的难免要跟钱打交道,特别是跟人民币接触更多,但人民币符号长什么样呢,是¥还是¥?糊涂了吧^~^,要知道答案很简单,找出一张新的一百元大钞,在背面看看那个防伪的银线,上面就有. 我们做网页时要 ...
- 采集的GPS数据如何正确显示在arcgis和cad中
利用GPS定位卫星,在全球范围内实时进行定位.导航的系统,称为全球卫星定位系统,简称GPS.GPS是由美国国防部研制建立的一种具有全方位.全天候.全时段.高精度的卫星导航系统,能为全球用户提供低成本. ...
- label正确显示多行数据
label显示多行文字时会遇到文字中包含换行符“\n”,这时需要对字符进行全部替换, if(labelContent.indexOf('\\n')>0){labelContent=labelCo ...
- 在windows中,如何使用cmd命令行窗口正确显示编码为utf-8格式的文字
在windows中,如何使用cmd命令行窗口正确显示编码为utf-8格式的文字呢? 正确的步骤如下: 1, 打开cmd命令行窗口 2, 输入命令 >chcp 65001 数字65001代表的是c ...
- Silverlight动画显示Line线
目的:在silverlight中显示两点之间的连线,要求动画显示连线效果. 如果需实现动画效果不得不了解,Storyborad对象: Storyboard Silverlight 通过时间线控制动 ...
- EL表达式结合页面JSTL使用 迭代显示表格
1.迭代显示表格 <%@ page isELIgnored="false"%><%@ taglib uri="/WEB-INF/struts-bean. ...
随机推荐
- Selenium-java-TestNg-的运行
package com.day.www; import org.testng.annotations.AfterClass;import org.testng.annotations.AfterMet ...
- httpd配置.md
httpd-2.2 配置 监听端口和IP 配置文件: Listen [IP:]PORT 省略IP表示为0.0.0.0 Listen指令可重复出现多次 修改监听socket,重启服务进程方可生效 可以监 ...
- UCenter创始人密码正确但是登录不了
UCenter创始人密码正确但是登录不了,没有什么提示,就反复输入密码登录 也进不了......... ================================================ ...
- java并发编程学习: ThreadLocal使用及原理
多线程应用中,如果希望一个变量隔离在某个线程内,即:该变量只能由某个线程本身可见,其它线程无法访问,那么ThreadLocal可以很方便的帮你做到这一点. 先来看一下示例: package yjmyz ...
- 基于Batcher比较器的双调排序网络
1. Batcher比较器 Batcher比较器是指如果在两个输入端给定输入x,y,再在两个输出端输出最大值max{x,y}和最小值min{x,y}.如图1所示,我们规定Batcher比较器的上输出端 ...
- 如何重新划分linux分区大小
1.下载脚本文件,将脚本文件内容复制 chmod +x resize.sh sudo ./resize.sh 输入上面命令后会看到下面的结果 root@odroid:~# sudo ./resize. ...
- 20145315&20145307《信息安全系统设计基础》实验五
20145315&20145307<信息安全系统设计基础>实验五 北京电子科技学院(BESTI) 实 验 报 告 课程:信息安全系统设计基础 班级:1453 1452 姓名:陈俊达 ...
- 【六年开源路】FineUI家族今日全部更新!
FineUI(开源版) 基于 ExtJS 的开源 ASP.NET 控件库 FineUI的使命 创建 No JavaScript,No CSS,No UpdatePanel,No ViewState ...
- 国内优秀npm镜像推荐及使用
npm全称Node Package Manager,是node.js的模块依赖管理工具.由于npm的源在国外,所以国内用户使用起来各种不方便.下面整理出了一部分国内优秀的npm镜像资源,国内用户可以选 ...
- PL/SQL 将旧表的一些字段赋值给新的表中的字段的做法
INSERT INTO 新表(字段1,字段2,.......) SELECT 字段1,字段2,...... FROM 旧表