LinearLayout を使用してダイアログを作成しました。このダイアログにはボタンがあります。その幅をダイアログの幅の 50% に設定したいのですが、何をしても、ボタンはまだ幅全体を埋めています。主な問題は、ボタンの重みをプログラムで設定できないことです。重みが 0.5f に設定されたボタンを保持する 2 つ目の水平方向の LinearLayout を作成しようとしましたが (親の weightSum は 1 です)、何も変わりませんでした。ボタンを半分の幅に設定するにはどうすればよいですか?
私は他のすべての質問を見てきましたが、それらのほとんどはxmlを使用していたため、関連性がありませんでした。プログラムで解決したものは、ハードコードされた値をピクセル単位で使用していましたが、これは明らかに問題の不適切な解決策です.
編集:いくつかのコードを追加する
LinearLayout linearLayout = new LinearLayout(mContext);
linearLayout.setOrientation(LinearLayout.VERTICAL);
linearLayout.setWeightSum(1);
// I use these params when I call addContentView
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
testButton = new Button(mContext);
testButton.setText("Test");
testButton.setId(1);
testButton.setWidth(0);
testButton.setGravity(Gravity.CENTER);
LinearLayout buttonLayout = new LinearLayout(mContext);
butonLayout.setOrientation(LinearLayout.HORIZONTAL);
LinearLayout.LayoutParams buttonParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT, 0.5f);
testButton.setLayoutParams(buttonParams);
buttonLayout.addView(testButton);
linearLayout.addView(buttonLayout);
...
this.addContentView(scrollView, layoutParams);