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>