LinearLayout の余白をプログラムで設定する 質問する

LinearLayout の余白をプログラムで設定する 質問する

私は Java ( XML ではありません) を使用して、画面いっぱいに表示され、余白のあるボタンを持つ LinearLayout を作成しようとしています。以下は余白なしで動作するコードです。

LinearLayout buttonsView = new LinearLayout(this);
buttonsView.setOrientation(LinearLayout.VERTICAL);
for (int r = 0; r < 6; ++r) {
    Button btn = new Button(this);
    btn.setText("A");

    LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.FILL_PARENT); // Verbose!
    lp.weight = 1.0f; // This is critical. Doesn't work without it.
    buttonsView.addView(btn, lp);
}

ViewGroup.LayoutParams lp = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT);
setContentView(buttonsView, lp);

それはうまく動作しますが、ボタン間にスペースができるようにボタンに余白を与えるにはどうしたらいいのでしょうか? を使用しようとしましたLinearLayout.MarginLayoutParamsが、メンバーがないため、うまくいきません。また、コンストラクターにweight渡しても動作しません。lp

これは不可能でしょうか? 確かに不可能に思えますし、これは XML でのみ実行できる最初の Android レイアウト タスクではありません。

ベストアンサー1

これを実現するための簡単なコードは次のとおりです。

LinearLayout ll = new LinearLayout(this);
ll.setOrientation(LinearLayout.VERTICAL);

LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
     LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);

layoutParams.setMargins(30, 20, 30, 0);

Button okButton=new Button(this);
okButton.setText("some text");
ll.addView(okButton, layoutParams);

おすすめ記事