回答:
あなたはTableLayout.LayoutParams
このようなもので使用する必要があります:
TextView tv = new TextView(v.getContext());
tv.setLayoutParams(new TableLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 1f));
最後のパラメーターは重量です。
TextView tv = (TextView) findViewById(R.id.your_textview_inside_the_linearlayout); tv.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 0.1f));
TableRow.LayoutParams
代わりにを使用する必要がありTableLayout.LayoutParams
ます。@Dorjeの回答を参照してください。
その答えは、LinearLayout.LayoutParamsやその他のLayoutParamsではなく、TableRow.LayoutParamsを使用する必要があるということです。
TextView tv = new TextView(v.getContext());
LayoutParams params = new TableRow.LayoutParams(0, LayoutParams.WRAP_CONTENT, 1f);
tv.setLayoutParams(params);
異なるLayoutParamは交換できません。間違ったものを使用すると、何も起こらないようです。テキストビューの親はテーブル行なので、次のようになります。
http://developer.android.com/reference/android/widget/TableRow.LayoutParams.html
LayoutParams
TableRow.LayoutParams
私もその仕事をしました
以前の回答では、重みは新しい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);
LinearLayout.LayoutParams
コンストラクタのソースをチェックするだけです。3番目のパラメーターは重量です。またはドキュメンテーション
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はweight = 1と呼ばれます。必要に応じて、2fまたは3fを指定できます。ビューは、コーディングに従ってスペースに移動します。線形レイアウトでビュー間の距離を指定するには、「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);
この仕事は私にとっても、あなたにとってもうまくいくことを願っています
最初に親ビューの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);
4時間しがみついた後。最後に、このコードは私のために働いた。
3列が並んでいます。
TextView serialno = new TextView(UsersActivity.this);
TextView userId = new TextView(UsersActivity.this);
TextView name = new TextView(UsersActivity.this);
serialno.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT, 1f));
userId.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT, 1f));
name.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT, 1f));
私はこれと非常によく似た解決策でかなりの困難を抱えていました: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;
}
layout_width=fill_parent
に設定し、それを行った後layout_weight=1
、button1とbutton2の両方にを設定することです。fill_parentおよびlayout_weight = 1のすべての要素は、膨張時に同じサイズになります。