何时在Android中以编程方式布局子视图

何时在Android中以编程方式布局子视图,android,android-layout,Android,Android Layout,我一直在将代码从iOS移植到Android,在iOS中使用了layoutSubviews方法。它们一开始工作得很好,但我现在遇到了UIThread被递归布局循环阻塞的情况。顺便说一句,所有代码都是通过使用宽度、高度、左边距和右边距的RelativeLayout完成的。我认为这是与CGRect最好的通信 现在,我在onLayout或onLayoutChange侦听器中执行“LayoutSubview”,但我遇到如下错误: 03-14 12:10:33.843 31568-31568/----- W

我一直在将代码从iOS移植到Android,在iOS中使用了layoutSubviews方法。它们一开始工作得很好,但我现在遇到了UIThread被递归布局循环阻塞的情况。顺便说一句,所有代码都是通过使用宽度、高度、左边距和右边距的RelativeLayout完成的。我认为这是与CGRect最好的通信

现在,我在onLayout或onLayoutChange侦听器中执行“LayoutSubview”,但我遇到如下错误:

03-14 12:10:33.843 31568-31568/----- W/View: requestLayout() improperly called by TextView{17e3bde3 V.ED.... ......ID 0,0-200,200} during layout: running second layout pass
如何修复或调试此问题?线程开始从内部布局遍历持续调用TextView的布局,然后最终崩溃,此时我可以使用该应用程序(需要8秒)

一般来说,代码太复杂了,无法在这里发布,因为它可以在小规模上工作,小布局也可以,但在大布局中失败

UILabel btw是一个Android文本视图扩展。只有一个设置字体和布局参数的快捷方式。

首先,我要说的是,无论是在官方文档还是在这些论坛上,都缺乏对Android的准确了解。诚然,专家们可能正在工作,而谷歌太忙了。每个世纪只有一个福尔摩斯,所以我想这要求太多了


该问题通过使用线性布局来解决,视图的这些方面本质上是线性的,即在行中,以及在行内的相对布局。问题在于,每次子视图的帧发生更改时,RelativeLayout都会调用super requestLayout,从而导致无限循环。我无法理解它是如何工作的,但现在所有的文件都加载得很快。

那么你是在尝试创建一个自定义的文本视图吗?不是。UILabel只是一个不同的名称。还删除init上的填充。我正在尝试“布局子视图”。