requestlayout,使行为无效

时间:2012-09-20 18:07:31

标签: android android-layout user-interface paint

在以编程方式更改某些TextView的Paint对象的字体后,

hat是否能在屏幕上显示更改的正确方法?

@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被导航离开然后再导航回来时,变化才会显示。

谢谢!

2 个答案:

答案 0 :(得分: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秒,然后运行您的过程。你应该能够玩时间并降低它或根据你的需要提高它。

答案 1 :(得分:0)

请参阅Simon的回答here以及我对它的评论。我一直在寻找的实际上是在布局过程完成后触发的回调。