질문에 엄격히 대답하려면 invalidate ()를 사용하십시오.
public void invalidate () 이후 : API 레벨 1
전체보기를 무효화하십시오. 보기가 표시되면 나중에 언 드로우 (Canvas)가 호출됩니다. UI 스레드에서 호출해야합니다. 비 UI 스레드에서 호출하려면 postInvalidate ()를 호출하십시오.
ViewGroup vg = findViewById (R.id.mainLayout);
vg.invalidate();
이제 활동이 재개되면 모든보기가 스스로 그려집니다. invalidate ()를 호출 할 필요가 없습니다. 테마를 적용하려면보기가 그려지기 전에 (즉, 전에) 수행해야합니다.setContentView(R.layout.mainscreen);
공개 무효 setTheme (int resid) 이후 : API 레벨 1
이 컨텍스트의 기본 테마를 설정하십시오. 컨텍스트에서 뷰를 인스턴스화하기 전에 (예 : setContentView (View) 또는 inflate (int, ViewGroup)을 호출하기 전에) 호출해야합니다.
API 문서 참조는 다음과 같습니다. http://developer.android.com/reference/android/view/ContextThemeWrapper.html#setTheme%28int%29
onDraw () 메소드는 이미 인스턴스화 된 뷰에서 작동하므로 setTheme이 작동하지 않습니다. 테마에 대한 경험이 없지만 생각할 수있는 두 가지 대안은 다음과 같습니다.
- 대신 onCreate ()에서 setTheme를 호출하거나
- redo setContentView (R.layout.mainscreen); 모든 레이아웃을 강제로 복원합니다.