Android 自定义视图组中的RelativeLayout如何获得其度量值?

Android 自定义视图组中的RelativeLayout如何获得其度量值?,android,android-layout,android-relativelayout,android-viewgroup,Android,Android Layout,Android Relativelayout,Android Viewgroup,在创建自定义视图组时,我遇到了一个问题。我已使用以下代码创建了一个视图组: import android.content.Context; import android.graphics.RectF; import android.view.View; import android.view.ViewGroup; import android.widget.RelativeLayout; public class noteLayout extends ViewGroup { float

在创建自定义视图组时,我遇到了一个问题。我已使用以下代码创建了一个视图组:

import android.content.Context;
import android.graphics.RectF;
import android.view.View;
import android.view.ViewGroup;
import android.widget.RelativeLayout;

public class noteLayout extends ViewGroup {
    float leftOrientationSize = 0;
    float rightOrientationSize=0;
    public noteLayout(Context activityContext)
    {
        super(activityContext);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        RelativeLayout mainParent = (RelativeLayout) getParent();
        final RelativeLayout child = (RelativeLayout) getChildAt(0);
        for (int i = 0; i < child.getChildCount(); i++) {
            final View childOfChild = child.getChildAt(i);
            if (childOfChild != null) {
                childOfChild.measure(MeasureSpec.makeMeasureSpec((mainParent.getWidth() / 2) - 30, MeasureSpec.AT_MOST), MeasureSpec.makeMeasureSpec(mainParent.getHeight(), MeasureSpec.AT_MOST));
            }
        }
        child.measure(MeasureSpec.makeMeasureSpec((mainParent.getWidth() / 2) - 30, MeasureSpec.AT_MOST), MeasureSpec.makeMeasureSpec((mainParent.getHeight() / 2) - 300, MeasureSpec.AT_MOST));
    }

    @Override
    protected void onLayout(boolean changed, int l, int t, int r, int b) {
        int numberOfChild = getChildCount();
        for (int i = 0;i<numberOfChild;i++){
            View childView = getChildAt(i);
            float childHeight = (float) childView.getMeasuredHeight();
            float childWidth = (float) childView.getMeasuredWidth();
            RectF rect = new RectF();
            rect.bottom = childHeight+20;
            rect.top = 20;
            rect.left = 20;
            rect.right = childWidth+20;
            childView.layout((int) rect.left, (int) rect.top, (int) rect.right, (int) rect.bottom);
        }
    }
}
我的问题是我不明白我的视图组是如何在它包含的相对布局中测量TextView的,所以这里有一些图片可以解释我的担忧

因此,上图的顺序如下所示。带有完全青色背景的图像是xml布局中test3的图像,第二个是它实际呈现的方式。我担心的是,我不知道到底发生了什么,因为图像的呈现方式与xml布局中的方式不匹配。有时注释文本会出现在中间,有时它会消失,这取决于它在相对位置上的位置。然而,我关心的是,为什么与xml设计选项卡中的注释视图相比,注释视图的呈现方式如此不同?也许我的视图组可能编码错误

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" android:background="@android:color/holo_blue_bright"
    android:id="@+id/ma"
    android:elevation="5dp">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="Note"
        android:id="@+id/displayNote"
        android:paddingBottom="10dp"
        android:paddingLeft="8dp"
        android:paddingRight="8dp"
        android:ellipsize="end"
        android:layout_below="@+id/textView2"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="Title:"
        android:id="@+id/textView2"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:paddingLeft="8dp"
        android:paddingRight="8dp"/>

</RelativeLayout>