Java Android中的onLayout()行为

Java Android中的onLayout()行为,java,android,layout,xamarin,Java,Android,Layout,Xamarin,我有自己的自定义视图,可以动态添加按钮控件。在我的onLayout方法中,我有一个如下的逻辑 @Override protected void onLayout(boolean changed, int left, int top, int right, int bottom) { super.onLayout(changed, left, top, right, bottom); for (int i = 0; i < this.getChildCount(); i++)

我有自己的自定义视图,可以动态添加按钮控件。在我的
onLayout
方法中,我有一个如下的逻辑

@Override
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
    super.onLayout(changed, left, top, right, bottom);
    for (int i = 0; i < this.getChildCount(); i++) {
        this.getChildAt(i).layout(left, top, right / 2, top + 200);
    }
}
@覆盖
仅限受保护的空心布局(布尔值已更改、整数左侧、整数顶部、整数右侧、整数底部){
超级。仅限布局(已更改、左、上、右、下);
for(int i=0;i
这是我的按钮控制,而不是缩小。将
layout()

我是否需要为
onMeasure()中的所有子级调用measure()


提前感谢。

是的,一般来说,度量告诉视图应该有多大,布局告诉视图应该在哪里。如果不进行测量而覆盖布局,视图将在错误的位置绘制全尺寸,并将被画布裁剪。

为什么要使用每个子视图的相同参数调用layout()?这只是一个示例。我需要澄清“will layout()设置视图的宽度,否则它只会裁剪它。”我不知道“裁剪”是什么意思。我实现了一个名为InputField的视图组,并在其中放置了一个TextView和EditText。我不必给他们打电话。事实上,measureChild(editText,w,h)什么也没做!我也不必叫drawChild。我只要把它们摆出来就行了。