私はLinearLayout
縦向きで、それに 3 つのサブビューを追加しようとしています。1 つのビューはボックスを描画するだけの高さ 50px の小さなビューで、2 つ目のビューはラジオ ボタンの水平方向のリストで、3 つ目のビューはグラフです。
グラフを最後に追加すると、すべてが画面に収まりますが、最初にグラフを追加すると、すべてが画面外に押し出され、画面上の唯一のビューになります。グラフは、できるだけ大きくしたい私のカスタムコントロールです(そのonMeasure
関数は、提供された幅と高さを返すだけです)。これが問題の場所だと思います。しかし、私はそれをできるだけ大きく保ち、追加された順序に関係なくレイアウトをビューに合わせたいと思っています。
これは可能ですか?もしそうなら、どうすればそれを達成できますか?最終的に、グラフを上に置き、他の 2 つのコントロールをその下に配置しようとしていますが、最初にグラフを追加すると、画面全体が消費されます。
ビューを作成するために使用しているコードは次のとおりです。これは学校の課題であり、XML レイアウトを使用できません。私はコントロールを作成するように割り当てられており、それを完了しました。コントロールを見せびらかすための簡単なアクティビティを作成しようとしています。
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LinearLayout layout = new LinearLayout(this);
layout.setOrientation(LinearLayout.VERTICAL);
layout.addView(new MovingBox(this));
RadioGroup radioGroup = new RadioGroup(this);
radioGroup.setOrientation(RadioGroup.HORIZONTAL);
radioGroup.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
RadioButton button = new RadioButton(this);
button.setText("Light");
button.setLayoutParams(new RadioGroup.LayoutParams(RadioGroup.LayoutParams.MATCH_PARENT, RadioGroup.LayoutParams.WRAP_CONTENT, 1));
radioGroup.addView(button);
button = new RadioButton(this);
button.setText("Dark");
button.setLayoutParams(new RadioGroup.LayoutParams(RadioGroup.LayoutParams.MATCH_PARENT, RadioGroup.LayoutParams.WRAP_CONTENT, 1));
radioGroup.addView(button);
button = new RadioButton(this);
button.setText("Colorful");
button.setLayoutParams(new RadioGroup.LayoutParams(RadioGroup.LayoutParams.MATCH_PARENT, RadioGroup.LayoutParams.WRAP_CONTENT, 1));
radioGroup.addView(button);
layout.addView(radioGroup);
// If I move these next to lines just below layout.setOrientation(...) it becomes the only thing visible
TweenerControl tw = new TweenerControl(this);
layout.addView(tw);
setContentView(layout);
}
}
グラフを最後に追加: (すべてが適合しますが、グラフを一番上にしたいです)
最初にグラフを追加: (グラフのみが表示されます)