可以正确显示表格线的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. ...
随机推荐
- webconfig中配置各种数据库的连接字符串(转)
一.在appSettings配置 <appSettings> <!--SQL Server--> <!--<add key="SQLString&qu ...
- 关于包含pom.xml的开源项目如何导入
1. 开源项目导入eclipse的一般步骤 2. 使用Eclipse构建Maven项目 (step-by-step) 3. 第一次安装和使用maven
- 关于Oracle AUTONOMOUS TRANSACTION(自治事务)的介绍
AUTONOMOUS TRANSACTION(自治事务)的介绍 在基于低版本的ORACLE做一些项目的过程中,有时会遇到一些头疼的问题,比如想在执行当前一个由多个DML组成的transaction(事 ...
- ELK日志系统:Elasticsearch + Logstash + Kibana 搭建教程
环境:OS X 10.10.5 + JDK 1.8 步骤: 一.下载ELK的三大组件 Elasticsearch下载地址: https://www.elastic.co/downloads/elast ...
- CSS实现背景透明,文字不透明(兼容各浏览器)
在 FF/Chrome 等较新的浏览器中可以使用css属性background- color的rgba轻松实现背景透明,而文字保持不透明.而IE6/7/8浏览器不支持rgba,只有使用IE的专属滤镜f ...
- docker搭建ros-indigo-arm交叉编译环境
ROS运行环境:ARM ubuntu14.04 + ROS indigo在arm环境下编译ros应用程序,速度极慢,无法忍受,尝试在x86机器上搭建docker+ros交叉编译环境. 交叉编译环境的搭 ...
- Word2Vec 使用总结
word2vec 是google 推出的做词嵌入(word embedding)的开源工具. 简单的说,它在给定的语料库上训练一个模型,然后会输出所有出现在语料库上的单词的向量表示,这个向量称为&qu ...
- 订餐系统之微信支付,踩了官方demo的坑
最近一个项目要增加微信支付的功能,想来这个东西出来这么久了,按微信提供的应该可以很快搞定的,结果提供的demo( JS API网页支付)中各种坑,咨询他们的客服,态度倒是非常好,就是解决不了问 ...
- ModernUI教程:独立显示器DPI感知
独立显示器DPI感知,是在Windows 8.1中新增的特性,这个特性针对拥有多个显示器同时各个显示器的DPI设定又不同的人.对这个新特性做了优化支持的软件能够在一个高DPI的显示器 ...
- mariadb
MariaDB数据库管理系统是MySQL的一个分支