0

ユーザーが設定した文字列に従って動的なインターフェイスを作成するアプリを開発しています。

XML ファイルにあるのは だけです。ScrollView残りは Java コードです。

ScrollView sv = (ScrollView)findViewById(R.id.sv);
LinearLayout ll = new LinearLayout(this);
ll.setOrientation(LinearLayout.VERTICAL);
TableLayout tl = new TableLayout(this);
TableRow[] tr = null;

次に、追加する必要があるボタンの数を示す文字列を解読します。それぞれの隣にButtonTextView. for ループでは、 と を作成し、ButtonsそれらTextViewsTableRowTableLayout追加します。これを に追加します。これを に追加します。LinearLayoutこれを に追加しScrollViewます。

私の問題は次のとおりです。Buttonsたとえば、幅を 200dp にしたいのですが、その後に が続きTextViewますが、現在は幅がWRAP_CONTENT. と のサイズの設定は、に追加ButtonするRelativeLayoutsetLayoutParams機能しませんTableRow

final float scale = getBaseContext().getResources().getDisplayMetrics().density;
                int pixels = (int) (200 * scale + 0.5f);

                RelativeLayout.LayoutParams rel_btn = new RelativeLayout.LayoutParams(
                        LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
                rel_btn.height = pixels;
                rel_btn.width = pixels;
btn.setLayoutParams(rel_btn);

tr[i].addView(btn);
tr[i].addView(tv);
tl.addView(tr[i]);

で私の問題を解決する方法を知っている人はいTableLayoutますか?

ネストされたLinearLayoutsものは別のアプローチかもしれないと読みましたが、Javaの例が見つからないようで、XMLのみです-動的である必要があります。

4

1 に答える 1

0

RelativeLayout.LayoutParamsあなたのButtonTextViewが の子である場合に使用する理由は何TableRowですか? 次のようになります。

TableRow.LayoutParams rel_btn = new TableRow.LayoutParams(pixels, pixels);
btn.setLayoutParams(rel_btn);

LinearLayoutまた、をラップするが本当に必要TableLayoutですか? それを他の目的で使用していない場合はLinearLayout、それを削除してビュー階層を改善する必要があります。

于 2012-07-31T11:59:39.750 に答える