可以正确显示表格线的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. ...
随机推荐
- IIS短文件名暴力枚举漏洞利用脚本
import sys import httplib import urlparse import threading import Queue import time class Scanner(): ...
- iOS widget开发
链接: iOS Widget开发 iOS开发之构建Widget iOS开发Widget iOS开发-widget基础 ios8新特性widget开发 ios 10 开发-widget实现 Widget ...
- HttpClient
Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们再讨论),它不仅是客户端发送Http请求变得容易,而且 ...
- 通过接口实现JAVA和.NET互调用-JNInterface
使用C#编程多年,也十分感激微软在语言架构.语法糖.编辑器等方面给自己带来的便利.但因为最近工作中有接触到JAVA,渐渐地发现的确像大家说的那样,JAVA的生态很好,要找点什么几乎都有现成的,于是自然 ...
- redshift 調節螢幕色溫 保護眼睛
// install redshift sudo apt-get install redshift // 調節 5000K 色溫 redshift -O 5000 // reset 色溫 redshi ...
- jQuery链式操作[转]
用过jQuery的朋友都知道他强大的链式操作,方便,简洁,易于理解,如下 $("has_children").click(function(){ $(this).addClass( ...
- Vue.js之v-for
v-for标签可以用来遍历数组,将数组的每一个值绑定到相应的视图元素中去,此外,v-for还可以遍历对象的属性,并且可以和template模板元素一起使用. 一.迭代数组 html: <ul&g ...
- 我的第一篇blog
加入博客园两年多了,学习.从事编程也两年多了,一直是在网上找资料,都没有认真写写博客. 博客园里面好多功能都还不会用,今天起我也要在博客园写自己的blog了.感觉很高大上的样纸!!
- js-JavaScript高级程序设计学习笔记19
第22章 高级技巧 1.高级函数 1.安全的类型检测. typeof,instanceof并非完全可靠. 安全的类型检测:使用Object原生的toString()方法. function isArr ...
- 消息中间件:RabbitMQ基本探索
RabbitMQ是一个基于AMQP协议(Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中 ...