Android getMeasuredHeight获取错误的值

时间:2015-03-26 11:59:06

标签: java android

我有这样的XML:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#000000" >
<com.XXXXXXXXXXX.view
    android:layout_width="200dp"
    android:background="#ffffff"
    android:layout_height="400dp"
    android:layout_centerInParent="true" />

我在方法onMesure中得到了视图高度,如下所示:

protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
{
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    if (!isMeasured)
    {
        isMeasured = true;
        mViewHeight = getMeasuredHeight();
        mViewWidth = getMeasuredWidth();...}

mViewWidth是正确的(600px),但mViewHeight错误(1626px)。
有人可以给我一些指示吗? Tks很多。

1 个答案:

答案 0 :(得分:2)

getMeasuredHeight()将返回孩子所需的高度,而不一定是它实际得到的高度。您还将获取第一个测量值并将宽度/高度设置为该值。出于不同原因,可以多次调用onMeasure。目的是根据给定的MeasureSpec约束说明您的视图需要多少高度/宽度。 onLayout稍后会在您父母真正想要的地方被调用,这可能与您在onMeasure中所要求的不符。

此外,视图已经有getWidth()getHeight(),它们在布局传递后有效。您需要自己的mViewWidthmViewHeight吗?