0

2 つのテキストビューとボタンを保持する画面の全幅のテーブル行があります。理想的には次のように表示したいと思います:

[テキストビュー1][テキストビュー2][ボタン]

Textview1 が左側に固定され、Button が右側に固定され、Textview2 が残りの使用可能なスペースを埋めます。私は周りを見回してきましたが、残っているものに合わせて自動的に拡大するオプションが見つかりません。

アプリの性質上、これらのテーブル行とそのコンテンツを自動的に追加する必要があるため、これまでのところ、これが私が持っているものです。

for( Program element :  sampleList)
{           
LayoutParams trLP = new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
LayoutParams timeLP = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.FILL_PARENT);
LayoutParams titleLP = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.FILL_PARENT);
LayoutParams moreInfoLP = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.FILL_PARENT);

//Table row to hold details
TableRow tr = new TableRow(this);
tr.setLayoutParams(trLP);

//Time
TextView time = new TextView(this);
time.setText(element.getTime());
timeLP.width=50;
timeLP.gravity=1;
time.setLayoutParams(timeLP);

//Title
TextView title = new TextView(this);
title.setText(element.getTitle());
title.setLayoutParams(titleLP);

//Button
moreInfo = new Button(this);
moreInfo.setText("More Info");

//Add to text views to table row
tr.addView(time);
tr.addView(title);
tr.addView(moreInfo);

holder.addView(tr, new TableLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));              
}

上記は機能しますが、明らかに希望どおりに表示されません。中央のテキストビューに wrap_content があるため、幅をハードコーディングできることはわかっていますが、そのシナリオから離れたいと思っています。私が達成しようとしていることは、私が持っている現在のコードでも可能ですか?

4

2 に答える 2

3

You might want to try out the weight property of LayoutParameters. In your case, set the outer element's weights to 0 and the weight of the center element to 1. This should make the center element to take as much space as possible. However, the weight property sometimes works a bit strange.

Also take a look at this Q/A

于 2013-03-10T19:44:17.000 に答える
0

これにはMigLayout(http://www.miglayout.com/およびhttps://github.com/saynomoo/mig4android)を使用します。これにより、この種の作業が簡単になります。私は期待していませんが、fillとgrowの制約は、必要な仕事をするように見えます。

于 2013-03-10T19:08:36.433 に答える