0
因此,iv创建了扩展视图的类。这里是我的代码:onDraw()方法不能正常工作
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if (!mTablesList.isEmpty()) {
drawTables(canvas);
}
}
private void drawTables(Canvas canvas) {
for (Table table : mTablesList) {
canvas.drawRect(mWidht * table.getLeft()/100, mHeight * table.getTop()/100, mWidht * table.getRight()/100, mHeight * table.getBottom()/100, m1Paint);
saveInfo(table, mWidht * table.getLeft()/100, mHeight * table.getTop()/100, mWidht * table.getRight()/100, mHeight * table.getBottom()/100);
}
}
private void saveInfo(Table table, int left, int top, int right, int bottom) {
Rect rect = new Rect();
rect.set(left, top, right, bottom);
table.setRect(rect);
mTablesListTouch.add(table);
}
现在,我有2个需要绘制的对象。第一个对象总是被绘制,但第二个对象不是。当我的第二个对象坐标是left和top == left和top时,它不显示,当对象绘制在绘制的对象1下方时,它显示。有人可以给我一个解决方案吗?
private void makeTables() {
Table table = new Table();
table.setLeft(20);
table.setTop(7);
table.setRight(40);
table.setBottom(20);
table.setAvailable(true);
table.setID(1);
listOfTables.add(table);
Table table1 = new Table();
table1.setLeft(20);
table1.setTop(70);
table1.setRight(60);
table1.setBottom(20);
table1.setAvailable(true);
table1.setID(2);
listOfTables.add(table1);
mTables.setTables(listOfTables);
}
settin mTables。
行,所以,这是setTables()方法:
public void setTables(List<Table> tables) {
mTablesList = tables;
mPaint.setColor(getResources().getColor(android.R.color.black));
invalidate();
}
后,它callse onMeasure()和的onDraw()
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
final int width = getDefaultSize(getSuggestedMinimumWidth(), widthMeasureSpec);
final int height = getDefaultSize(getSuggestedMinimumHeight(), heightMeasureSpec);
mWidht = width;
mHeight = height;
setMeasuredDimension(mWidht, mHeight);
}
带上一个代码,你正在填写mTablesList – AterLux
它是在里面的活动,从那里调用setTables()方法 –
好的。现在,里面有什么“setTables()”?如果您从创建过程中获得“表格”的完整生命周期,那就更好了。 – AterLux