getLayoutParams()。高度在onGlobalLayout()之后返回-2

时间:2014-05-14 09:56:02

标签: java android android-layout layout

我有一个android对话框,我想在其窗口中的特定位置定位。

我正在使用API​​ 8

int a == -2int b == 153怎么不是正面的?

之间有什么区别
getLayoutParams().height;
    mToolTipLayout.getHeight();

我有以下代码

  public void initViews(int orientation) {

    mToolTipLayout = ((LinearLayout) findViewById(R.id.tooltip_layout));

    ViewTreeObserver vto = mToolTipLayout.getViewTreeObserver();
    vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
      @Override
      public void onGlobalLayout() {
        mToolTipLayout.getViewTreeObserver().removeGlobalOnLayoutListener(this);
        setPosition();
      }
    });


  private void setPosition() {
    int a = mToolTipLayout.getLayoutParams().height;
int b = mToolTipLayout.getHeight();

  }

2 个答案:

答案 0 :(得分:3)

布局参数指定度量和布局过程应如何工作。它们未在度量/布局过程中更新。 -2WRAP_CONTENT的值。

这些措施本身可以在视图中找到,而不是它们的布局参数。 153是您的案例中的测量像素高度,使用WRAP_CONTENT规范

衡量

答案 1 :(得分:0)

是,-2表示WRAP_CONTENT。在这种情况下,要获取布局的高度,您不能使用getLayoutParams().heightgetHeight()(分别为-2和0)。您应该获得内部视图的高度(例如,使用view.getLayoutParams().height)。可能要添加填充。