我有一个在水平滚动窗口中按列显示文本和图像的视图。它重排,因此(至少可能)随着内容的变化而调整自己的大小;当软键盘来来去去并且视图高度发生变化时,它也会重新排列和调整大小(保持大致恒定的区域)。
我发现大多数时候调用requestLayout()有效(从某种意义上说,它确实触发了对我的onMeasure()重载的调用)......但从我的onSizeChanged()处理程序调用时却没有。
我可以通过post() ing 一个Runnable来解决这个问题,该 Runnable调用requestLayout()
然后post()
ed 另一个Runnable
调用我的代码的代码,该代码需要在onMeasure()
...之后运行,但这似乎有点脆弱(我不想添加延迟,但是我确实想确保我的第二个Runnable
确实在 async 之后执行onMeasure()
)并且可能是因为它通过事件循环进行了太多次,所以屏幕闪烁太多。
是否有某种方式——在一个onSizeChanged()
——强制一个onMeasure()
(并且可能是另一个)在下一个onDraw()onSizeChanged()
之前发生?