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 回答