android 没有现成的表格控件,但我们可以根据Tablayout,ListView等组合出自己的表格。废话少说,使用Tablayout自己写一个表格控件,该表格控件可以自己设置表头,动态的添加行,自定义背景颜色等。
效果图:
首先表格的的的某一项的文字可能很多,也可能是表格中有大的图片等内容,因此可能一个屏幕不够用的情况,这是必须使用水平和垂直的滚动条了,既然表格中不仅仅有文字,因此必须自己写好表格的每一行即是TabRow
KTabeView
import android.content.Context;
import android.graphics.Color;
import android.util.AttributeSet;
import android.widget.HorizontalScrollView;
import android.widget.ScrollView;
import android.widget.TableLayout;
import android.widget.TableRow;
/*
* 一个表格控件
* 宽哥
* 2013、8、7
*/
public class KtableView extends ScrollView {
private TableLayout tableLayout; //表格布局
private AddDivisionRow divisionRow; //水平分割线
//各种参数
private int headColor = Color.WHITE;
private int headHeight = TableRow.LayoutParams.WRAP_CONTENT;
private int headtextColor = Color.BLACK;
private int hedaMaxEms = 10;
private int divisonColor = Color.RED;
private int divisonWidth = 1;
private int resId = 0;
private int backgroudColor = Color.WHITE;
private int cellMaxEms = 10;;
private int cellTextColor = Color.BLACK;
private int cellTextSize = 15;
private int cellHeight = TableRow.LayoutParams.WRAP_CONTENT;
public KtableView(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
initWidge();
}
/*
* 公共接口
*/
/*
* 设置表格的标题头
*/
public void setTableHeaders(String[] header){
//添加分割线
divisionRow = new AddDivisionRow(getContext());
tableLayout.addView(divisionRow.addTableRow());
AddHeadRow row = new AddHeadRow(getContext(), header);
row.setDivisonColor(divisonColor);
row.setDivisonWidth(divisonWidth);
row.setBackgroundColor(headColor);
row.setTabRowHeight(headHeight);
row.setTextMaxEms(hedaMaxEms);
row.setTextClor(headtextColor);
tableLayout.addView(row.addTableRow());
tableLayout.addView(divisionRow.addTableRow()); //添加分割线
}
/*
* 设置表格头的背景颜色
*/
public void setTableheadColor(int color){
this.headColor =color;
}
/*
* 设置表头的的高度
*/
public void setTableHeadHeigt(int height){
this.headHeight = height;
}
/*
* 设置表头的的字体颜色
*/
public void setTableHeadTextcolor(int color){
this.headtextColor = color;
}
/*
* 设置表头的的字体大小
*/
public void setTableHeadMaxEms(int size){
this.hedaMaxEms =size;
}
public void setTableDivisonColor(int color){
this.divisonColor = color;
}
public void setTableDivisonWidth(int width){
this.divisonWidth &