我的自定义布局的子项不会重新布局并重新正确测量

时间:2012-03-05 23:53:35

标签: android layout viewgroup

我实现了一个扩展ViewGroup的自定义布局。在onLayout()方法中,我对所有孩子做了一个循环:我将它们添加到布局中,测量它们然后布局它们。它工作得很好。

但现在我希望我的孩子拥有动态内容。所以我已经为每个孩子的视图添加了一个处理程序和一个runnable(我的布局填充了一个适配器)。此runnable旨在每10秒更新一次textview。会发生什么是TextView被截断。我发现它实际上需要设置的第一个字符串的宽度,并且永远不会重新测量或重新布局。我决定让我的自定义布局扩展FrameLayout。如果在我的onLayout()方法中我调用super.onLayout(),一切正常。每次Runnable更新子项中的TextView时,我都会回调自定义布局的onLayout方法。

最大的问题是为什么?扩展FrameLayout是不够的,我必须调用super.onLayout()。我检查了这个方法的代码,但无法弄清楚它是如何使它工作的。根据文档,布局是自上而下的一次传递,为什么调用此方法会使我的自定义布局在每次更新子项时重新布局?请注意,我试图在我的孩子身上调用requestLayout()和invalidate()无效。

感谢您的阅读。如果不够清楚,我可以提供代码。

0 个答案:

没有答案