レイアウト内に2つのボタンが並んでいます。私はそれらが同じ幅を持つことを望みます。ただし、すべてのボタンの幅は、それらの最も広い幅に等しくする必要があります。今私はViewTreeObserverを使用しています。
class LayoutListener implements ViewTreeObserver.OnGlobalLayoutListener{
private Button btn1, btn2;
public LayoutListener(Button b1, Button b2){
btn1 = b1; btn2 = b2;
}
@Override
public void onGlobalLayout() {
int w1 = btn1.getWidth();
int w2 = btn2.getWidth();
if (w1 < w2)
btn1.setWidth(w2);
else
btn2.setWidth(w1);
}
}
しかし、要素がユーザーに表示された後に再描画され、見栄えが悪いため、これは良い決定ではありません。ご想像のとおり、必要な動作に到達するにはどうすればよいでしょうか? マークアップを操作する方法はありますか、それとも特別なコードを実装する必要がありますか? ボタンのコンテナーとして使用できるカスタム レイアウトを作成することは避けることが望ましいです。