【问题标题】:Listen for layout changes in Android监听 Android 中的布局变化
【发布时间】:2011-01-17 17:54:38
【问题描述】:

如何在布局传递完成时收到通知?有没有像onLayoutFinished() 这样我可以在某处实现或覆盖的东西?

来自Viewjavadoc:

布局是一个两遍过程:a 测量通道和布局通道。这 测量通过实施 measure(int, int) 是自上而下的 遍历视图树。每个视图 降低尺寸规格 递归过程中的树。在 测量结束,每个视图 已存储其测量值。这 第二遍发生在 layout(int, int, int, int) 并且也是自上而下的。 在这个过程中,每个父母都是 负责定位其所有 使用计算的大小的孩子 测量通过。

我想要在“第二遍”完成后执行一些逻辑。特别是,我想对一个视图进行一些更改,然后根据第一个视图的框架(位置和大小)对另一个视图进行更改。

【问题讨论】:

    标签: android layout view android-layout


    【解决方案1】:

    你可以简单地重写 onLayout() 并在调用 super.onLayout() 之后做任何你需要做的事情。你也可以重写 onSizeChanged(),它只会在布局过程改变 View 的坐标/大小时被调用。

    【讨论】:

    • 我尝试覆盖 onLayout() 但事情并没有像我预期的那样运行。由于感觉像是在与平台做事的方式作斗争,所以我最终决定在第一个视图上计算布局传递的结果,并在此基础上请求更改第二个视图的布局。然后在同一布局过程中同时更改视图。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-05
    • 2012-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多