水平方向にスクロールするウィンドウに、テキストと画像を列に表示するビューがあります。リフローするため、(少なくとも潜在的に) コンテンツの変更に応じてサイズが変更されます。また、ソフト キーボードが出入りしてビューの高さが変わると、リフローしてサイズ変更します (ほぼ一定の領域を維持します)。
私が見つけたのは、 requestLayout()の呼び出しが(onMeasure()オーバーロードへの呼び出しをトリガーするという意味で) ほとんどの場合機能することですが、 onSizeChanged()ハンドラーから呼び出された場合は機能しません。
呼び出したRunnableをpost()してから、後で実行する必要があるコードを呼び出した別のコードを ed することで、これを回避できました...しかし、これは少し壊れやすいようです (遅延を追加したくありません。それでも、秒が async の後に実行されることを確認したいのですが、おそらくイベントループを非常に多く通過するため、画面が点滅しすぎます。requestLayout()
post()
Runnable
onMeasure()
Runnable
onMeasure()
次のonDraw()の前に(そしておそらく別の) をonSizeChanged()
強制的に発生させる方法はありますか?onMeasure()
onSizeChanged()