2013-05-30 8 views
1

я установить тему приложения, используя следующий стильизменения атрибут стиля во время выполнения

<style name="Background1" parent="@android:style/Theme.NoTitleBar.Fullscreen"> 
     <item name="android:windowBackground">@drawable/bigl_2</item> 
     <item name="android:windowNoTitle">true</item> 
    </style> 

с помощью этого метода:

setTheme(R.style.background1); 

Вот мое требование, я хочу, чтобы изменить тему с растровым изображением, как я могу это сделать во время выполнения?

Благодаря

+1

Ну, я вижу такой же вопрос сейчас! по адресу http://stackoverflow.com/questions/16832574/set-style-in-theme-programatically –

ответ

1

Вы можете посмотреть на тот же вопрос: android dynamically change style at runtime

Как мне кажется, дело в том, что общие атрибуты стиля могут заставить экран заново Оформление печатных изданий, так что нет API для изменения стилей во время выполнения - вам нужно создать экран заново (тот же подход продиктован изменениям ориентации ландшафта и портретного экрана, где активность воссоздана, а большие мозги системных архитекторов Android придумали saveState в onCreate(), чтобы упростить (усложнить ?) этот процесс, а затем придумал Фрагменты, чтобы это было еще проще))

Таким образом, изменение стилей обычно означает изменение макета. Но вы можете изменять атрибуты темы во время выполнения (по ссылке выше - я сам не пробовал), и она будет работать, поскольку она не нуждается в повторной компоновке.

Как обходной путь, так как вам нужно будет воссоздать представления для нового макета, вы можете упростить код, применив другую тему, см. Ссылку.

Смежные вопросы