219

TableRowオブジェクトを動的に作成してTableLayout. TableRowオブジェクトには aTextViewと aの2 つの項目がありCheckBoxます。アイテムを右端に移動するには、アイテムのTextViewレイアウト ウェイトを 1 に設定する必要があります。CheckBox

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

4

12 に答える 12

362

TableLayout.LayoutParams次のようなものを使用する必要があります。

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

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

于 2010-07-11T19:33:34.660 に答える
99

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

于 2012-07-31T16:06:21.380 に答える
40

以前の回答では、重みが新しい 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);
于 2014-05-03T22:52:09.273 に答える
17
TextView txtview = new TextView(v.getContext());
LayoutParams params = new LinearLayout.LayoutParams(0, LayoutParams.WRAP_CONTENT, 1f);
txtview.setLayoutParams(params);

1f は重み = 1 として表されます。2f または 3f を指定すると、ビューはスペースに従って移動します

于 2016-02-29T07:15:11.397 に答える
13

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

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

 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);
于 2013-05-04T09:08:06.037 に答える
11
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);
于 2014-12-08T11:52:57.663 に答える
10

これはあなたに役立つはずです

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

param.weight=1.0f;
于 2016-08-08T11:36:47.833 に答える
7

このように別々に重みを付けることもできます。

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

 lp1.weight=1;
于 2014-02-08T10:33:30.490 に答える
6

これは私にとってはうまくいきます。あなたにもうまくいくことを願っています

最初に親ビューの 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); 
于 2012-08-20T23:34:47.233 に答える
1

これを行う別の方法があります。「高さ」など、1 つのパラメーターのみを設定する必要がある場合:

TextView textView = (TextView)findViewById(R.id.text_view);
ViewGroup.LayoutParams params = textView.getLayoutParams();
params.height = ViewGroup.LayoutParams.WRAP_CONTENT;
textView.setLayoutParams(params);
于 2014-01-28T19:04:15.940 に答える
-1

これと非常によく似たソリューションで、かなりの困難がありました。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;
        }
于 2011-09-02T20:03:35.653 に答える