Android带边框表格的实现
最近做项目需要用到表格,数据是动态指定的,本来用GridView是很方便的,可是老大不同意用这么重量级的控件,想办法吧。
做表格很容易想到用TableLayout,那就自定义一个来搞。
一、表格最蛋疼的就是那根线,网上有个很好的方法,大概思路是这样的:
1、给表格设置一个背景色(线的颜色)
2、给表格设置一个内边距(线的宽度的一半)
3、设置每一项内边距(线的宽度的一半)
3、给项的内容设置一个背景色(颜色不同于线即可)
显示效果大概是这样的:
二、数据的动态加载使用Adapter类,便与布局加载
自定义TableLayout加载的主体方法:
public void setAdapter(BaseAdapter baseAdapter, int column) { if (baseAdapter == null || baseAdapter.getCount() == 0) { return; } this.mAdapter = baseAdapter; this.column = column; drawLayout(); }
private void drawLayout() { removeAllViews(); int realcount = mAdapter.getCount(); int count = 0; if (realcount < column) { count = column; } else if (realcount % column != 0) { count = realcount + column - (realcount % column); } else { count = realcount; } TableRow tableRow = null;//每一行的TableRow for (int i = 0; i < count; i++) { final int index = i; View view = null; if (index >= realcount) { view = mAdapter.getView((realcount - 1), null, null); view.setVisibility(View.INVISIBLE); } else { view = mAdapter.getView(index, null, null); } if (index % column == 0) {// 整行 tableRow = new TableRow(mContext); } if (tableRow != null) {//添加每一个Item tableRow.addView(view); } if (index % column == 0) {// 整行 addView(tableRow, new TableLayout.LayoutParams( LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); } } }
三、使用和ListView的方式基本一样
public class MainActivity extends Activity { private List<Map<String, Object>> dataList; private TableBorderLayout layTable; private String[] datas = new String[] { "疯狂", "个性", "张扬", "抖擞", "加油", "奋斗", "努力", "精神" }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initViews(); loadDatas(); } private void initViews() { layTable = (TableBorderLayout) findViewById(R.id.layTable); } private void loadDatas() { dataList = new ArrayList<Map<String, Object>>(); Map<String, Object> item = null; for (int i = 0; i < datas.length; i++) { item = new HashMap<String, Object>(); item.put("Title", datas[i]); dataList.add(item); } layTable.setAdapter(new MyAdapter(this, dataList)); } }
感兴趣的可以去这个地址下载:https://github.com/PearLemon/TableBorderLayout.git
Android带边框表格的实现的更多相关文章
- Android ------------------ 带边框的圆角矩形
<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http:/ ...
- android 带边框的圆角按钮
新建buttonstyle.xml 代码如下 <?xml version="1.0" encoding="UTF-8"?> <layer-li ...
- Android自定义控件 -- 带边框的TextView
使用xml实现边框 原来使用带边框的TextView时一般都是用XML定义来完成,在drawable目录中定义如下所示的xml文件: <?xml version="1.0" ...
- Android GridView去除自带边框点击效果、去除右侧滚动条、禁止上下滑动
一.去除自带边框点击效果: <com.example.gridview.MyGridView android:id="@+id/grid_upload_pictures" a ...
- 自定义带边框TextView--边框粗细不一的问题
自定义带边框TextView 给textview加边框 最low的做法.textview外层套一层布局,然后给布局加边框样式(这么弱的做法,不能这么干) 自定义控件 canvas.drawLines ...
- css挤带边框的三角
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- UIImage类扩展返回一个带边框的圆形图片
/** * 将image转换为圆型带边框的图片(最好写一个UIImage的类扩展) * * @param name 图片的名字 * @param borderWidth 外层边框的宽度 * @para ...
- Android -- 带你从源码角度领悟Dagger2入门到放弃
1,以前的博客也写了两篇关于Dagger2,但是感觉自己使用的时候还是云里雾里的,更不谈各位来看博客的同学了,所以今天打算和大家再一次的入坑试试,最后一次了,保证最后一次了. 2,接入项目 在项目的G ...
- Android -- 带你从源码角度领悟Dagger2入门到放弃(二)
1,接着我们上一篇继续介绍,在上一篇我们介绍了简单的@Inject和@Component的结合使用,现在我们继续以老师和学生的例子,我们知道学生上课的时候都会有书籍来辅助听课,先来看看我们之前的Stu ...
随机推荐
- 懒加载插件- jquery.lazyload.js
Lazy Load 是一个用 JavaScript 编写的 jQuery 插件. 它可以延迟加载长页面中的图片. 在浏览器可视区域外的图片不会被载入, 直到用户将页面滚动到它们所在的位置. 这与图片预 ...
- Python之Web前端jQuery扩展
Python之Web前端: 一. jQuery表单验证 二. jQuery扩展 三. 滚动菜单 一. jQuery表单验证: 任何可以交互的站点都有输入表单,只要有可能,就应该对用户输入的数据进行验证 ...
- ant 使用指南
一.概述 ant 是一个将软件编译.测试.部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发.在实际软件开发中,有很多地方可以用到ant. 开发环境: System:Windo ...
- Visual Studio Emulator for Android 的安装与使用 感觉最干净好看的模拟器.
Step1 win8+ 6G+ 添加删除程序\ hyper 创建虚拟机 安装visual studio android 模拟器, 自带三个模拟器 使用管理员打开模拟器 参考文献 Visual Stu ...
- Git 小技巧
分享git的几个小技巧,后面会根据使用补充.目前包括git撤销本地修改.git回退到前n个版本.git多用户提交冲突解决.git 命令简化.欢迎大家补充^_* 1.git撤销本地修改 git rese ...
- PHP之session与cookie
1.session与cookie的关系 众所周知,session是存储在服务器端,cookie是存储在客户端,如果禁用了浏览器的cookie功能,很多时候(除非进行了特殊配置)服务器端就无法再读取se ...
- css flex布局
关于flex布局的一些简单用法 效果(下图) 实现代码: <!--html--> <div class="wrap"> <div class=&quo ...
- 为什么说在使用多条件判断时switch case语句比if语句效率高?
在学习JavaScript中的if控制语句和switch控制语句的时候,提到了使用多条件判断时switch case语句比if语句效率高,但是身为小白的我并没有在代码中看出有什么不同.去度娘找了半个小 ...
- 数量经济学推荐的Julia教程
http://quant-econ.net/jl/learning_julia.html Julia最为号称和c媲美的运行速度,想python一下简单的语法,虽然发展还不完善,但任然值得去关注. Ju ...
- js 弹出确认 取消对话框
一种: <a href="javascript:if(confirm('确实要删除该内容吗?')){location='http://www.google.com'}"> ...