0

TutorialManagerアプリの使用に関するすべてのユーザーの個別指導を処理する を作成しています。

が呼び出されたViewGroup後にアイテムで埋められる GridView を含む、それ自体にビューを追加する があります。onMeasure()

グリッドビューでアクションを実行することになっているTutorialManagersメソッドを呼び出していますが、アイテムを使用するためにグリッドビューがいつ満たされるかを知る必要があります

ViewGroupすべてのビューが追加された直後に呼び出されるコールバック メソッドを追加しました

問題は、TutorialManager がビューを強調表示するためにビューの X 座標と Y 座標を知る必要があることです。ShowCaseView

postDelayed(action, 100); を使用して回避策を追加しました。これは私のハンドセットでは機能しているようですが、一部のデバイスでビューのレイアウトに 100 ミリ秒以上かかる場合はどうなりますか? 家庭教師制度全体を台無しにしてしまいます。

ビューの位置が判明した後に呼び出されるコールバック メソッドを持つカスタム ビューを作成する以外の方法はわかりません。

画面上のレイアウト ビューが非同期で発生しているという問題を処理する一般的な方法は何ですか?

4

1 に答える 1

0

レイアウトが変更されるたびに起動する OnGlobalLayoutListener を使用してみることができます (つまり、GridView と子が追加され、測定されました。したがって、GridView を初期化するたびに、次のようにします。

LayoutListener mLayoutListener = new LayoutListener;
mGridView.getViewTreeObserver().addOnGlobalLayoutListener(mLayoutListener);

private class LayoutListener implements OnGlobalLayoutListener {
    @Override
    public void onGlobalLayout() {
        ...Do your calculations here...

        mGridView.getViewTreeObserver().removeOnGlobalLayoutListener(this); //If you only need this to execute once.
    }
}

これはかなり頻繁に呼び出されることに注意してください。不要になったらすぐに削除することをお勧めします。

于 2014-01-21T14:33:34.797 に答える