在TableLayout中测量列宽

时间:2011-08-29 21:51:14

标签: android

我有一个包含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列。为此(我相信)我需要在显示时测量列的宽度。这该怎么做?谢谢!

2 个答案:

答案 0 :(得分:1)

要将子视图的宽度设置为80%,可以使用“layout_width”属性,将其设置为0.8

答案 1 :(得分:0)

我认为您不需要知道父母的尺寸。您可以在自定义视图中使用match_parrent属性。文章How Android draws views介绍了如何使自定义视图的大小合适。