その中TableLayout
に複数のTableRow
ビューがあります。行の高さをプログラムで指定したい。例えば
int rowHeight = calculateRowHeight();
TableLayout tableLayout = new TableLayout(activity);
TableRow tableRow = buildTableRow();
TableLayout.LayoutParams rowLp = new TableLayout.LayoutParams(
LayoutParams.FILL_PARENT, rowHeight);
tableLayout.addView(tableRow, rowLp);
しかし、これは機能せず、デフォルトで WRAP_CONTENT になっています。Android のソース コードを調べてみると、( onMeasure TableLayout
() メソッドによってトリガーされた) に次のように表示されます。
private void findLargestCells(int widthMeasureSpec) {
final int count = getChildCount();
for (int i = 0; i < count; i++) {
final View child = getChildAt(i);
if (child instanceof TableRow) {
final TableRow row = (TableRow) child;
// forces the row's height
final ViewGroup.LayoutParams layoutParams = row.getLayoutParams();
layoutParams.height = LayoutParams.WRAP_CONTENT;
行の高さを設定しようとすると、TableLayout によってオーバーライドされるようです。誰でもこれを回避する方法を知っていますか?