我有两个按钮放在布局内。我希望它们具有相同的宽度。但每个按钮的宽度必须等于其中最宽的一个。现在我使用 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);
}
}
但这不是一个好的决定,因为元素在显示给用户后被重绘,看起来很糟糕。和你可以猜到的问题,我怎样才能达到所需的行为?有没有标记操作的方法或者我应该实现特殊代码?最好避免创建可用作按钮容器的自定义布局。