среда, марта 21, 2012

Как программно добавить строки с колонками одинаковой ширины в TableLayout

Если коротко - для каждой колонки (т. е. для содержимого TableRow) нужно задать
layout_width="0dp"
layout_weight="1"

Вот пример кода
// Важно импортировать именно этот класс LayoutParams - иначе
// строки просто не покажутся
import android.widget.TableRow.LayoutParams;

import static android.view.ViewGroup.LayoutParams.FILL_PARENT;
import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT;



@ViewById(R.id.datatable)
TableLayout datatable;
...   ...   ...


for (ParamValue param : params) {
TableRow row = new TableRow(this);
row.setLayoutParams(new LayoutParams(FILL_PARENT, WRAP_CONTENT));

TextView paramName = new TextView(this);
paramName.setText(param.parameter);
paramName.setLayoutParams(new LayoutParams(0, WRAP_CONTENT, 1));

TextView paramValue = new TextView(this);
paramValue.setText(param.value);
paramValue.setLayoutParams(new LayoutParams(0, WRAP_CONTENT, 1));

row.addView(paramName);
row.addView(paramValue);

datatable.addView(row, new LayoutParams(FILL_PARENT, WRAP_CONTENT));
}





пятница, марта 09, 2012

FrameLayout и layout_marginTop

Не знаю, баг это или фича, но в случае, если view находится внутри frameLayout, то установка этому view свойства layout_marginTop ни на что не влияет - view по-прежнему располагается без отступа сверху.

Чтобы этот отступ сверху появился бы, нужно дополнительно задать этому view значение layout_gravity="top".