我有一个包含4列的TableLayout。为了拉伸第1列,我做了:
android:stretchColumns="1"
这很有效。现在,我需要在屏幕上显示后测量该列1的宽度。我需要这样做,因为我想将自定义视图放入此列。这个自定义视图只是一个矩形,它将填充到此列的完整宽度1.我通过以下方式绘制矩形:
public class TaskRectangleView extends View {
private ShapeDrawable mDrawable;
private Paint textPaint;
private String task;
public TaskRectangleView(Context context, String task, int width, int height) {
super(context);
this.task = task;
int x = 10;
int y = 10;
mDrawable = new ShapeDrawable(new RectShape());
int color = DbSettingsManager.getInstance(context).getColorByName(task);
mDrawable.getPaint().setColor(color);
mDrawable.setBounds(x, y, x + width, y + height);
textPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
textPaint.setColor(Color.WHITE);
textPaint.setTextSize(10);
}
protected void onDraw(Canvas canvas) {
mDrawable.draw(canvas);
canvas.drawText(this.task, 10, 20, textPaint);
}
}
所以这个自定义绘制的矩形应该适合我的TableView的第1列。为此(我相信)我需要在显示时测量列的宽度。这该怎么做?谢谢!
答案 0 :(得分:1)
要将子视图的宽度设置为80%,可以使用“layout_width”属性,将其设置为0.8
答案 1 :(得分:0)
我认为您不需要知道父母的尺寸。您可以在自定义视图中使用match_parrent属性。文章How Android draws views介绍了如何使自定义视图的大小合适。