Чтобы строго ответить на вопрос: используйте invalidate ():
public void invalidate ()
С тех пор: Уровень API 1
Признать недействительным весь вид. Если представление является видимым, onDraw (Canvas) будет вызван в какой-то момент в будущем. Это должно быть вызвано из потока пользовательского интерфейса. Для вызова из не-пользовательского потока вызовите postInvalidate ().
ViewGroup vg = findViewById (R.id.mainLayout);
vg.invalidate();
Теперь, когда действие возобновляется, он заставляет каждый вид рисовать сам. Не нужно вызывать invalidate (). Чтобы применить тему, убедитесь, что вы делаете это до того, как будет нарисован любой вид, т.е. до setContentView(R.layout.mainscreen);
публичный void setTheme (int остаток)
Начиная с: Уровень API 1
Установите базовую тему для этого контекста. Обратите внимание, что это следует вызывать до того, как будут созданы какие-либо представления в контексте (например, перед вызовом setContentView (View) или inflate (int, ViewGroup)).
Справочная информация по API приведена здесь: http://developer.android.com/reference/android/view/ContextThemeWrapper.html#setTheme%28int%29
Поскольку метод onDraw () работает с уже созданными экземплярами Views, setTheme работать не будет. У меня нет опыта работы с темами, но я могу подумать о двух альтернативных вариантах:
- вызовите setTheme в onCreate () вместо этого или
- повторить setContentView (R.layout.mainscreen); заставить восстановить все макет.