TableRow
オブジェクトを動的に作成してTableLayout
. TableRow
オブジェクトには aTextView
と aの2 つの項目がありCheckBox
ます。アイテムを右端に移動するには、アイテムのTextView
レイアウト ウェイトを 1 に設定する必要があります。CheckBox
TextView
アイテムのレイアウト ウェイトをプログラムで設定する方法に関するドキュメントが見つかりません。
TableRow
オブジェクトを動的に作成してTableLayout
. TableRow
オブジェクトには aTextView
と aの2 つの項目がありCheckBox
ます。アイテムを右端に移動するには、アイテムのTextView
レイアウト ウェイトを 1 に設定する必要があります。CheckBox
TextView
アイテムのレイアウト ウェイトをプログラムで設定する方法に関するドキュメントが見つかりません。
TableLayout.LayoutParams
次のようなものを使用する必要があります。
TextView tv = new TextView(v.getContext());
tv.setLayoutParams(new TableLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 1f));
最後のパラメータは重みです。
答えは、LinearLayout.LayoutParams やその他の LayoutParams ではなく、TableRow.LayoutParams を使用する必要があるということです。
TextView tv = new TextView(v.getContext());
LayoutParams params = new TableRow.LayoutParams(0, LayoutParams.WRAP_CONTENT, 1f);
tv.setLayoutParams(params);
異なる LayoutParams は互換性がなく、間違ったものを使用しても何も起こらないようです。テキスト ビューの親はテーブルの行であるため、次のようになります。
http://developer.android.com/reference/android/widget/TableRow.LayoutParams.html
以前の回答では、重みが新しい SomeLayoutType.LayoutParams オブジェクトのコンストラクターに渡されます。それでも多くの場合、既存のオブジェクトを使用する方が便利です。これは、関心のないパラメーターの処理を避けるのに役立ちます。
例:
// Get our View (TextView or anything) object:
View v = findViewById(R.id.our_view);
// Get params:
LinearLayout.LayoutParams loparams = (LinearLayout.LayoutParams) v.getLayoutParams();
// Set only target params:
loparams.height = 0;
loparams.weight = 1;
v.setLayoutParams(loparams);
TextView txtview = new TextView(v.getContext());
LayoutParams params = new LinearLayout.LayoutParams(0, LayoutParams.WRAP_CONTENT, 1f);
txtview.setLayoutParams(params);
1f は重み = 1 として表されます。2f または 3f を指定すると、ビューはスペースに従って移動します
そのレイアウトにレイアウトパラメータを設定するだけです
パラメータ変数を作成する
android.widget.LinearLayout.LayoutParams params = new android.widget.LinearLayout.LayoutParams(
LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT, 1f);
1f は重み変数
ウィジェットまたはレイアウトを次のように設定します
TextView text = (TextView) findViewById(R.id.text);
text.setLayoutParams(params);
TextView text = new TextView(v.getContext());
text.setLayoutParams(new TableLayout.LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT, 1f));
(また)
TextView tv = new TextView(v.getContext());
LayoutParams params = new TableRow.LayoutParams(0, LayoutParams.WRAP_CONTENT, 1f);
tv.setLayoutParams(params);
1f は重み = 1 として参照されます。必要に応じて 2f または 3f を指定できます。ビューはスペースに合わせて移動します。Linear レイアウトでビュー間の指定距離を作成するには、「LinearLayout」のweightsumを使用します。
LinearLayout ll_Outer= (LinearLayout ) view.findViewById(R.id.linearview);
LinearLayout llInner = new LinearLayout(this);
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FillParent, LinearLayout.LayoutParams.WrapContent);
llInner.Orientation = Orientation.Horizontal;
llInner.WeightSum = 2;
ll_Outer.AddView(llInner);
これはあなたに役立つはずです
LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT LayoutParams.MATCH_PARENT);
param.weight=1.0f;
このように別々に重みを付けることもできます。
LayoutParams lp1 = new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT);
lp1.weight=1;
これは私にとってはうまくいきます。あなたにもうまくいくことを願っています
最初に親ビューの LayoutParams を設定します。
myTableLayout.setLayoutParams(new TableLayout.LayoutParams(TableLayout.LayoutParams.FILL_PARENT,
TableLayout.LayoutParams.FILL_PARENT));
次に、TextView (子) に設定します。
TableLayout.LayoutParams textViewParam = new TableLayout.LayoutParams
(TableLayout.LayoutParams.WRAP_CONTENT,
TableLayout.LayoutParams.WRAP_CONTENT,1f);
//-- set components margins
textViewParam.setMargins(5, 0, 5,0);
myTextView.setLayoutParams(textViewParam);
これを行う別の方法があります。「高さ」など、1 つのパラメーターのみを設定する必要がある場合:
TextView textView = (TextView)findViewById(R.id.text_view);
ViewGroup.LayoutParams params = textView.getLayoutParams();
params.height = ViewGroup.LayoutParams.WRAP_CONTENT;
textView.setLayoutParams(params);
これと非常によく似たソリューションで、かなりの困難がありました。TableRow に 2 つのボタンを配置し、それぞれを画面幅の半分にしようとしました。何らかの理由で、左ボタンは常に幅の約 70%、右ボタンは 30% になります。table_layout.setStretchAllColumns(true) を呼び出しても効果はなく、ボタンの幅を画面の半分に設定したり、レイアウトの重みを設定したりしませんでした。
私が最終的に得た解決策は、ボタンの幅の値を考慮した、TableRows に LinearLayout をネストすることでした。
TableLayout layout = new TableLayout(this);
TableRow top_row = new TableRow(this);
left_button = styleButton();
right_button = styleButton();
LinearLayout toprow_layout = new LinearLayout (this);
toprow_layout.setOrientation(LinearLayout.HORIZONTAL);
toprow_layout.addView (left_button);
toprow_layout.addView(right_button);
toprow.addView(top_layout);
layout.addView(top_row)
private Button styleButton() {
Button btn = new Button (this);
android.view.Display display = ((android.view.WindowManager)getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
btn.setWidth((int)(display.getWidth()/2)); // set width to half
btn.setHeight(((int)display.getHeight()/6)); // set height to whatevs
btn.setText("foo");
return btn;
}