要严格回答这个问题:使用invalidate():
public void invalidate()从:API级别1
使整个视图无效。如果该视图可见,则将来会在某个时候调用onDraw(Canvas)。必须从UI线程调用它。要从非UI线程进行调用,请调用postInvalidate()。
ViewGroup vg = findViewById (R.id.mainLayout);
vg.invalidate();
现在,当Activity恢复时,它将使每个视图都可以绘制。不需要调用invalidate()。要应用主题,请确保在绘制任何视图之前(即在setContentView(R.layout.mainscreen);
公共无效setTheme(int resid)从:API级别1
设置此上下文的基本主题。请注意,应在Context中实例化任何视图之前(例如,在调用setContentView(View)或inflate(int,ViewGroup)之前)调用此方法。
API文档参考位于此处:http : //developer.android.com/reference/android/view/ContextThemeWrapper.html#setTheme%28int%29
由于onDraw()方法适用于已实例化的View,因此setTheme将不起作用。我自己没有主题的经验,但是我可以想到的两个选择是:
- 而是在onCreate()中调用setTheme,或者
- 重做setContentView(R.layout.mainscreen); 强制实例化所有布局。