2012-09-20 2 views
0

모자는 일부 TextView의 Paint 객체의 글꼴을 프로그래밍 방식으로 변경 한 후 화면에 변경 내용을 표시하는 올바른 방법입니다.requestlayout, 무효화 동작

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

졸업생() 메서드 호출은 위의 재귀 적 mLytHowToPlay의 아이들을 취급하고 자신의 페인트 객체에 대한 변경 사항을 만드는 것입니다. 또한 onCreate()와 onStart()에서이 시퀀스를 동일한 효과를 사용하여 시도했습니다. 변경 사항은 Activity가 멀리 이동 한 후 다시 탐색 할 때까지 보이지 않습니다.

감사합니다.

답변

0

Simon의 대답 here과 내 의견을 참조하십시오. 내가 찾고 있던 것은 실제로 레이아웃 프로세스가 완료된 후에 트리거 된 콜백이었다.

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 초 정도 기다렸다가 프로세스를 실행하는 것입니다. 타이밍에 따라 놀고 낮추거나 필요한 것에 따라 올릴 수 있어야합니다.

+0

작품! 나는 받아 들일 것 같지 않지만 해결책이라고 생각합니다. 그것은 더 많은 해킹입니다. 하지만 고마워! – kellogs

+0

내 이해에서, onCreate() (.NET의 load 메소드와 같은)는 활동을 작성하고 활동의 라이프 사이클 (http://developer.android.com/reference/android/app/Activity)에서만 한 번 호출됩니다. .html). 당신이하고 싶은 프로세스는 액티비티가 액티브 일 때 앤드 로이드가 실제로 처리 할 방법을 가지고 있지 않을 때 완료 될 것입니다. onStart()는 애플리케이션이 가시화되면서 호출되므로 onCreate 또는 onStart가 activty를 생성/인스턴스화 한 후에 시작하는 처리기를 생성해야합니다. – zabawaba99

+0

나도 몰라, 거기에 하나의 활동이 지연 해결 방법없이 잘 내 애플 리케이션에 있습니다. 그것은 onResume()에서 호출 된 코드와 함께 작동합니다. – kellogs