web-dev-qa-db-ja.com

TextViewのレイアウトの太さをプログラムで設定する

私は動的にTableRowオブジェクトを作成し、それらをTableLayoutに追加しようとしています。 TableRowオブジェクトには、TextViewCheckBoxの2つの項目があります。 TextView項目は、CheckBox項目を一番右にプッシュするために、レイアウトの重みを1に設定する必要があります。

TextView項目のレイアウト上の重みをプログラムで設定する方法に関するドキュメントが見つかりません。

204
eugene

あなたはTableLayout.LayoutParamsを次のようなものと共に使わなければなりません:

TextView tv = new TextView(v.getContext());
tv.setLayoutParams(new TableLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 1f));

最後のパラメータは重みです。

350
Macarse

その答えは、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

93
Dorje

以前の答えでは、weightが新しい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);
37
sberezin
TextView txtview = new TextView(v.getContext());
LayoutParams params = new LinearLayout.LayoutParams(0, LayoutParams.WRAP_CONTENT, 1f);
txtview.setLayoutParams(params);

1fは、重み= 1として表す。あなたは2fまたは3fを与えることができます、眺めは宇宙に調和して動くでしょう

15
user5967758

そのレイアウトにレイアウトパラメータを設定するだけです。

パラメータ変数を作成する

 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);
12
Manikandan
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"にweightumを使用します。

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);
11
anand krish

あなたはまた、このように別に体重を与えることができます、

LayoutParams lp1 = new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT);

 lp1.weight=1;
7
kiran boghra

これはあなたにはたらくはずです

LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT LayoutParams.MATCH_PARENT);

param.weight=1.0f;
7
Ashok Reddy M

これは私のために働きます、そして私はそれがあなたのためにも働くことを願っています

最初に親ビューの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); 
6
Najem1234

これを行うには別の方法があります。例えば ​​'height'のように一つだけパラメータを設定する必要がある場合:

TextView textView = (TextView)findViewById(R.id.text_view);
ViewGroup.LayoutParams params = textView.getLayoutParams();
params.height = ViewGroup.LayoutParams.WRAP_CONTENT;
textView.setLayoutParams(params);
1
Dmitry

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));
0
Gulshan Yadav