0

WebView でカスタム ローテーション処理を行うアクティビティがあります。問題は、方向の変更によりレイアウトが再描画されたにイベントをトリガーする必要があることです。ローテーション ハンドラーで、webview よりも幅の広い要素を検出しています。onConfigurationChanged でこのハンドラーをトリガーすると、ビュー サイズはまだ再計算されないため、回転前に幅を取得しています。

私には2つの悪い解決策があります:

  • 他のシーンのサイズとすべてのパディングおよび他のビューからプログラムでサイズを計算しますが、複雑すぎて効果がありません。
  • タイムアウトでハンドラーをトリガーしますが、タイムアウトが長いと見苦しく、タイムアウトが短いと信頼できません。

レイアウトが再描画された後にトリガーされるイベントはありますか?

前もって感謝します。

4

1 に答える 1

1

どうView.onAttachedToWindow()ですか?

それが機能しない場合 (ドキュメンテーションには、 before が呼び出される可能性があると記載されているonMeasure()ため、タイミングと頻度がニーズに合っているかどうかはわかりません)、使用する View オブジェクトの 1 つを拡張することにより、レイアウト プロセスにフックすることができます。 、オーバーライドView.onLayoutして UI スレッドのコールバックをスケジュールします。ただし、複数回の発生に備えます。

于 2013-02-21T14:26:21.733 に答える