相対レイアウトで動的に設定されるビューで構成されるボードを動的に作成しています。私の onCreate では、すべてを作成する Board クラスのコンストラクターを呼び出します。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_layout);
RelativeLayout boardLayout = (RelativeLayout) findViewById(R.id.layoutBoard);
board = new Board(this, boardLayout);
}
私の Board クラスでは、レイヤーのルールを設定し、表示するビューのサイズも設定する必要がありますboardLayout.getWidth()
。boardLayout.getHeight()
ここでの問題は、画面上のすべての実際の描画が onCreate メソッドの終了後にのみ実行されるため、作成の瞬間にレイヤーの幅と高さがゼロになることです。
そこで、次を使用してサイズを設定することにしました。
boardLayout.addOnLayoutChangeListener(new RelativeLayout.OnLayoutChangeListener() {
@Override
public void onLayoutChange(View v, int left, int top, int right,
int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
board.setParentLayoutSize(left, top, right, bottom);
}
});
残念ながら、このメソッドは API 11 からのみ利用可能であり、最大で API 10 に固執する必要があります。どうすればこれを実行できますか? この方法を使わずにレイアウトの変更を聞く方法はありますか?
ありがとうございました!