我有一個視圖,在水平滾動窗口中以列顯示文本和圖像。它會重新流動,因此(至少有可能)隨着其內容的變化而重新調整自身;它還會在軟鍵盤進出和視圖高度發生變化時重排和調整大小(保持大致恆定的區域)。從onSizeChanged()調用requestLayout()時沒有效果?
我發現那是什麼調用requestLayout()作品(在這個意義上,它並觸發對我onMeasure()超載的調用)的大部分時間......但不從我onSizeChanged()處理程序調用時。
我能夠post()解決此一荷蘭國際集團是Runnable叫requestLayout()
然後post()
ED另一個Runnable
調用我的代碼需要onMeasure()
後運行...但是這似乎有點脆弱的(我不知道想要添加一個延遲,但我確實希望確保我的第二個Runnable
在異步onMeasure()
後確實執行),也許是因爲它在事件循環中傳遞了很多次,屏幕閃爍過多。
是否有某種方式 - 在onSizeChanged()
- 以強制onMeasure()
(和可能,另一個onSizeChanged()
)到下一個onDraw()之前發生的呢?
而不是再次調用'requestLayout()'(並且它不能從'onSizeChanged()'工作,因爲這個回調是佈局過程的一部分),爲什麼不直接計算正確的大小'onMeasure()'? –
我這樣做,那是有效的。但是,當高度發生變化時,我會重新調整寬度,從而需要觸發'onMeasure()'調用。 –
您的問題實際上給了我一個我剛剛遇到的問題的答案,謝謝:)您的View.post解決方案對我無任何副作用。謝謝! –