2

3 列のデータを正常に表示するアクティビティには次のものがあります (最大 10 行あるため、for ループになります)。

for (int i=0;i<10;i++)
        {
            TableRow tr = new TableRow(this);
            TextView tv0 = new TextView(this);
            TextView tv1 = new TextView(this);
            TextView tv2 = new TextView(this);
            TableRow.LayoutParams trlp = new TableRow.LayoutParams();
            trlp.span = 3;
            trlp.weight = 1;
            tr.setLayoutParams(trlp);
            tv0.setText("" + debtName[i]);
            tv1.setText("" + debtAmount[i]);
            tv2.setText("" + debtPayment[i]);
            tr.addView(tv0);
            tr.addView(tv1);
            tr.addView(tv2);
            tl.addView(tr);
        }

レイアウトにハードコードされたタイトル行があるため、それらを均等に重み付けする必要があります。「trlp.weight = 1;」存在しなかった時から変わっていません。

私が探しているのは、tv0、tv1、tv2 TextViews を均等に (水平に) 分散させる方法です。

また、参考までに、私は API 12 で実行しています。

4

1 に答える 1

3

スケーリングするはずの子に重みを設定する必要があります。

1 は、デフォルトで 100% のスケーリングを意味します。3 つのテキストビューを均等に広げたい場合は、それぞれの重みとして 0.33 を設定します。

TableRow.layoutParams trlp = new LayoutParams(0, LayoutParams.MATCH_PARENT, 0.33f);
tv0.setLayoutParams(trlp);
...
tr.add(tv0);
...
于 2013-11-03T22:58:10.410 に答える