Заполнить TableLayout с android:layout_weight программно

Я пытаюсь заполнить макет таблицы ячейками и строками, которые растягиваются на весь экран. Вот так:

http://imageshack.us/photo/my-images/69/device20120201005942.png/

Этот макет, созданный в окне Graphical Layout в Eclipse, дает то, что я хочу (android:layout_weight решает проблему вертикального растяжения):




    

        
        
        
    

    

    
    
    
    

Я пытаюсь создать такой же вид в коде, но пока не удалось. Вот oncreate моей Activity:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.tablelo);

    TableLayout tl = (TableLayout) findViewById(R.id.table);
    Log.d(TAG, "Width :" + tl.getWidth());
    for (int row = 0; row < 3; row++) {
        TableRow tr = new TableRow(this);
        tr.setId(100 + row);

        for (int cell = 0; cell < 3; cell++) {
            ImageView image = new ImageView(this);
            image.setImageResource(imageIDs[row * 3 + cell]);
            tr.addView(image);
        }

        tr.setGravity(Gravity.CENTER);
        LayoutParams params = new TableRow.LayoutParams(
                LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT, 1);

        tr.setLayoutParams(params);

        tl.addView(tr, params);
    }
    tl.setStretchAllColumns(true);
}

Мне не хватает кода для установки гравитации ImageView, но эта попытка вызывает крах:

image.setLayoutParams(new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, Gravity.CENTER));

Этот код приводит к созданию 3 строк, каждая из которых растягивается горизонтально, но не вертикально:

http://imageshack.us/photo/my-images/835/gridc.png/

Я не могу найти, чего мне не хватает здесь. Я также попытался подготовить таблицу в дизайнере, раздуть и добавить в таблицу во время выполнения, но результат не изменился.

Так вот, я хочу как-то программно получить тот же макет, который я мог создать в редакторе.

Помогите, пожалуйста!

5
задан volkan 31 January 2012 в 23:21
поделиться