0

考虑到 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 个按钮的大小。

4

1 回答 1

1

您正试图过早地获得宽度和高度,实际上,如果您正在使用活动,您可以在此处获得尺寸:

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

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

于 2019-09-19T14:06:29.427 回答