0

いくつかの TextView の Paint オブジェクトのフォントをプログラムで変更した後、変更を画面上に表示する正しい方法はありますか?

@Override
protected void onResume()
{
    super.onResume();
    mMainController.grads(mLytHowToPlay, true, FaceTypes.FACEIT, GradTypes.NONE, 8);
    mLytHowToPlay.requestLayout();
        mLytHowToPlay.invalidate();
}

上記の grads() メソッド呼び出しは、mLytHowToPlay の子を再帰的に処理し、それらの Paint オブジェクトに変更を加えるものです。同じ効果で onCreate() と onStart() からこのシーケンスも試しました。変更は、Activity がナビゲートされてから再びナビゲートされるまで表示されません。

ありがとうございました!

4

2 に答える 2

0

onCreate()メソッドの最後に、次のようなスレッドを作成します。

Handler mHandler = new Handler();
mHandler.postDelayed(new Runnable() {
    public void run() {
        mMainController.grads(mLytHowToPlay, true, FaceTypes.FACEIT, GradTypes.NONE, 8);
        mLytHowToPlay.requestLayout();
        mLytHowToPlay.invalidate();

    }
},2000);

これにより、アプリが作成されてから2秒待ってから、プロセスを実行します。必要に応じて、タイミングを調整して下げたり上げたりできるはずです。

于 2012-09-20T21:53:26.133 に答える
0

こちらのサイモンの回答とそれに対する私のコメントを参照してください。私が探していたのは、実際には、レイアウト プロセスが完了した直後にトリガーされるコールバックでした。

于 2012-10-15T18:21:23.230 に答える