在 wrap_content 之后获取按钮大小?

get button size after wrap_content?

如何在考虑 wrap_content 属性后获取按钮大小?

我想创建 2 个大小相同的按钮,它们都具有 wrap_content 属性,所以我的解决方案是使用 wrap_content 创建它们,获取最大宽度和高度,然后应用两个按钮的最大值,问题是我在尝试打印按钮的宽度和高度时只得到零值。

//Create the first button
    Button firstButton= new Button(activity);
    LinearLayout.LayoutParams secondaryParams = new LinearLayout.LayoutParams(
                            LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT, 1f);
    footerLayout.addView(firstButton, firstParams);

//same thing for the other button
   Button secondaryButton= new Button(activity);
    LinearLayout.LayoutParams secondaryParams = new LinearLayout.LayoutParams(
                            LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT, 1f);
    footerLayout.addView(secondaryButton, 0, secondaryParams );


//trying to get the size:
  firstButton.measure(0, 0); //must call measure!
    int measuredWidth = firstButton.getWidth();
    int measuredHeight = firstButton.getHeight();

在应用 WRAP_CONTENT 属性后获取 2 个按钮的大小。

您试图过早获取宽度和高度,实际上,如果您使用的是 activity,则可以在此处获取尺寸:

@Override
 public void onWindowFocusChanged(boolean hasFocus) {
  super.onWindowFocusChanged(hasFocus);
  //Here you can get the size!
 }

此方法被调用多次或每次 window 中发生变化(视图隐藏、消失、添加新视图等)时调用。所以请谨慎使用!