Skip to content

Commit

Permalink
列可以直接设置宽度,也可以通过注解设置宽度。
Browse files Browse the repository at this point in the history
huangyanbin committed Mar 16, 2018
1 parent e21a1a4 commit 953f317
Showing 21 changed files with 100 additions and 172 deletions.
Original file line number Diff line number Diff line change
@@ -359,7 +359,7 @@ public int getTextColor(Integer position) {
table.getConfig().setContentCellBackgroundFormat(backgroundFormat)
.setYSequenceCellBgFormat(backgroundFormat2);
table.setTableData(tableData);
tableData.setOnRowItemClickListener(new TableData.OnRowItemClickListener<UserInfo>() {
tableData.setOnRowClickListener(new TableData.OnRowClickListener<UserInfo>() {
@Override
public void onClick(Column column, UserInfo userInfo, int col, int row) {
Toast.makeText(ParseModeActivity.this,"用户:"+userInfo.getName(),Toast.LENGTH_SHORT).show();
12 changes: 0 additions & 12 deletions app/src/main/res/drawable-v21/ic_menu_camera.xml

This file was deleted.

9 changes: 0 additions & 9 deletions app/src/main/res/drawable-v21/ic_menu_gallery.xml

This file was deleted.

9 changes: 0 additions & 9 deletions app/src/main/res/drawable-v21/ic_menu_manage.xml

This file was deleted.

9 changes: 0 additions & 9 deletions app/src/main/res/drawable-v21/ic_menu_send.xml

This file was deleted.

9 changes: 0 additions & 9 deletions app/src/main/res/drawable-v21/ic_menu_share.xml

This file was deleted.

9 changes: 0 additions & 9 deletions app/src/main/res/drawable-v21/ic_menu_slideshow.xml

This file was deleted.

34 changes: 0 additions & 34 deletions app/src/main/res/drawable-v24/ic_launcher_foreground.xml

This file was deleted.

5 changes: 0 additions & 5 deletions app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml

This file was deleted.

5 changes: 0 additions & 5 deletions app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml

This file was deleted.

11 changes: 11 additions & 0 deletions form/src/main/java/com/bin/david/form/annotation/SmartColumn.java
Original file line number Diff line number Diff line change
@@ -34,6 +34,11 @@
* 对齐
*/
Paint.Align align() default Paint.Align.CENTER;

/**
* 列标题对齐
*/
Paint.Align titleAlign() default Paint.Align.CENTER;
/**
* 设置是否查询下一级
* @return 是否查询下一级
@@ -75,5 +80,11 @@
*/
int minHeight() default 0;

/**
* 指定宽度
* @return
*/
int width() default 0;


}
Original file line number Diff line number Diff line change
@@ -41,7 +41,7 @@ public Rect correctCellRect(int row, int col, Rect rect, float zoom) {
int[] lineHeights = tableData.getTableInfo().getLineHeightArray();
int width = 0, height = 0;
for (int i = col; i < Math.min(childColumns.size(), col + point.col); i++) {
width += childColumns.get(i).getWidth();
width += childColumns.get(i).getComputeWidth();
}
for (int i = row; i < Math.min(lineHeights.length, row + point.row); i++) {
height += lineHeights[i];
Original file line number Diff line number Diff line change
@@ -2,7 +2,6 @@


import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.PointF;
import android.graphics.Rect;
@@ -147,7 +146,7 @@ private void drawCount(Canvas canvas) {
for (int i = 0; i < columnSize; i++) {
Column column = columns.get(i);
float tempLeft = left;
float width = column.getWidth()*config.getZoom();
float width = column.getComputeWidth()*config.getZoom();
if(childColumnInfos.get(i).getTopParent().column.isFixed()){
if(left < clipRect.left) {
left = clipRect.left;
@@ -292,7 +291,7 @@ private void drawContent(Canvas canvas) {
for (int i = 0; i < columnSize; i++) {
top = scaleRect.top;
Column column = columns.get(i);
float width = column.getWidth()*config.getZoom();
float width = column.getComputeWidth()*config.getZoom();
float tempLeft = left;
//根据根部标题是否固定
Column topColumn = childColumnInfo.get(i).getTopParent().column;
@@ -482,7 +481,7 @@ public int[] getPointLocation(double row,double col){
int x=0,y =0;
int columnSize = childColumns.size();
for(int i = 0; i <= (columnSize > col+1 ? col+1 : columnSize-1);i++){
int w = childColumns.get(i).getWidth();
int w = childColumns.get(i).getComputeWidth();
if(i == (int)col+1){
x +=w *(col-(int)col);
}else {
@@ -517,7 +516,7 @@ public int[] getPointSize(int row,int col){
row = row< lineHeights.length ? row:lineHeights.length;//行
col = col< 0 ? 0 : col;
row = row< 0 ? 0 : row;
return new int[]{(int) (childColumns.get(col).getWidth()*config.getZoom()),
return new int[]{(int) (childColumns.get(col).getComputeWidth()*config.getZoom()),
(int) (lineHeights[row]*config.getZoom())};

}
Original file line number Diff line number Diff line change
@@ -73,7 +73,7 @@ public void onDraw(Canvas canvas, Rect showRect, TableData<T> tableData, TableCo
List<ColumnInfo> childColumnInfos = tableData.getChildColumnInfos();
for(int i = 0;i < columnSize;i++){
Column column = columns.get(i);
float width = column.getWidth()*config.getZoom();
float width = column.getComputeWidth()*config.getZoom();
float right = left + width;
if(childColumnInfos.get(i).getTopParent().column.isFixed()){
if(left < clipRect.left) {
36 changes: 9 additions & 27 deletions form/src/main/java/com/bin/david/form/core/AnnotationParser.java
Original file line number Diff line number Diff line change
@@ -24,6 +24,7 @@

public class AnnotationParser<T> {

private int dp10;
/**
* 解析注解
* @param dataList
@@ -92,31 +93,6 @@ private void getColumnAnnotation(Class clazz, String parentFieldName, List<Colu
}
}

/**
* 判断是否是基本类型、包装类型、String类型
* @param type 类名
* @return 是否是基本类型、包装类型、String类型
*/
private boolean isBaseType(Class type){
String[] baseTypes = {"java.lang.Integer",
"java.lang.Double",
"java.lang.Float",
"java.lang.Long",
"java.lang.Short",
"java.lang.Byte",
"java.lang.Boolean",
"java.lang.Character",
"java.lang.String",
"int","double","long","short","byte","boolean","char","float"};
for(String baseType : baseTypes) {
if (type.getName().equals(baseType)) {
return true;
}
}

return false;
}

/**
* 创建列
*/
@@ -137,8 +113,10 @@ private void createColumn(String fieldName,Field field, List<Column> columns, Ma
column.setFast(isFast);
column.setTextAlign(smartColumn.align());
column.setAutoMerge(smartColumn.autoMerge());
column.setMinWidth(smartColumn.minWidth());
column.setMinHeight(smartColumn.minHeight());
column.setMinWidth(smartColumn.minWidth()*dp10/10);
column.setMinHeight(smartColumn.minHeight()*dp10/10);
column.setTitleAlign(smartColumn.titleAlign());
column.setWidth(smartColumn.width()*dp10/10);
if(smartColumn.maxMergeCount() !=-1) {
column.setMaxMergeCount(smartColumn.maxMergeCount());
}
@@ -197,4 +175,8 @@ private Column<?> getGenericColumn(String name, String fieldName, boolean isArra
}
return column;
}

public AnnotationParser(int dp10) {
this.dp10 = dp10;
}
}
7 changes: 5 additions & 2 deletions form/src/main/java/com/bin/david/form/core/SmartTable.java
Original file line number Diff line number Diff line change
@@ -25,6 +25,7 @@
import com.bin.david.form.listener.OnColumnClickListener;
import com.bin.david.form.listener.OnTableChangeListener;
import com.bin.david.form.matrix.MatrixHelper;
import com.bin.david.form.utils.DensityUtils;

import java.util.List;

@@ -56,6 +57,7 @@ public class SmartTable<T> extends View implements OnTableChangeListener{
private boolean isNotifying = false; //是否正在更新数据
private boolean isYSequenceRight;


public SmartTable(Context context) {
super(context);
init();
@@ -76,10 +78,11 @@ public SmartTable(Context context, AttributeSet attrs, int defStyleAttr) {
*/
private void init(){
FontStyle.setDefaultTextSpSize(getContext(),13);
config = new TableConfig();
config.dp10 = DensityUtils.dp2px(getContext(),10);
paint = new Paint(Paint.ANTI_ALIAS_FLAG);
showRect = new Rect();
tableRect = new Rect();
config = new TableConfig();
xAxis = new XSequence<>();
yAxis = new YSequence<>();
parser = new TableParser<>();
@@ -182,7 +185,7 @@ public TableConfig getConfig() {
*/
public PageTableData<T> setData(List<T> data){
if(annotationParser == null){
annotationParser = new AnnotationParser<>();
annotationParser = new AnnotationParser<>(config.dp10);
}
PageTableData<T> tableData = annotationParser.parse(data);
if(tableData != null) {
2 changes: 2 additions & 0 deletions form/src/main/java/com/bin/david/form/core/TableConfig.java
Original file line number Diff line number Diff line change
@@ -33,6 +33,8 @@ public class TableConfig {
* 无效值
*/
public static final int INVALID_COLOR = 0;

public int dp10;
/**
* 内容字体样式
*/
7 changes: 3 additions & 4 deletions form/src/main/java/com/bin/david/form/core/TableMeasurer.java
Original file line number Diff line number Diff line change
@@ -189,8 +189,7 @@ private int getTableWidth(TableData<T> tableData,TableConfig config){
width = Math.max(totalCountWidth+2*config.getHorizontalPadding(), width);
}
width = Math.max(column.getMinWidth(),width);
width = Math.min(column.getMaxWidth(), width);
column.setWidth(width);
column.setComputeWidth(width);
contentWidth+=width;
columnPos++;
}
@@ -202,7 +201,7 @@ private int getTableWidth(TableData<T> tableData,TableConfig config){
minWidth -=totalWidth;
float widthScale = ((float) minWidth)/contentWidth;
for(Column column:tableData.getChildColumns()){
column.setWidth((int)(widthScale*column.getWidth()));
column.setComputeWidth((int)(widthScale*column.getComputeWidth()));
}
totalWidth+=minWidth;
}
@@ -251,7 +250,7 @@ public ColumnInfo getColumnInfo(TableData<T> tableData,Column column,ColumnInfo
columnInfo.setParent(parent);
tableData.getColumnInfos().add(columnInfo);
if(!column.isParent()){
columnInfo.width = column.getWidth();
columnInfo.width = column.getComputeWidth();
columnInfo.top = top;
columnInfo.height = tableInfo.getTitleHeight()*overLevel;
tableData.getChildColumnInfos().add(columnInfo);
Loading
Oops, something went wrong.

0 comments on commit 953f317

Please sign in to comment.