2015-12-17 2 views
0

Это мой actuall style.xml моего приложения:Android: Изменение темы приложения динамически

<style name="AppTheme.Base" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <item name="android:alertDialogTheme">@style/customDialog</item> 
    <item name="android:actionBarStyle">@style/customActionBar</item> 
</style> 


<style name="LoginStyle" parent="AppTheme.Base"> 
    <item name="colorPrimaryDark">@color/Material_Blue</item> 
    <item name="colorControlNormal">#c5c5c5</item> 
    <item name="colorControlActivated">#FFFFFF</item> 
    <item name="colorControlHighlight">#FFFFFF</item> 
</style> 

<style name="MainStyle" parent="AppTheme.Base"> 
    <item name="android:actionBarTheme">@style/customActionBar</item> 
    <item name="android:colorAccent">@color/md_material_blue_600</item> 
    <item name="colorPrimaryDark">@color/Material_Blue</item> 
    <item name="colorControlNormal">@color/md_material_blue_600</item> 
    <item name="colorControlActivated">@color/md_material_blue_600</item> 
    <item name="colorControlHighlight">@color/md_material_blue_600</item> 
</style> 

<style name="customDialog"> 
    <item name="android:windowIsFloating">true</item> 
    <item name="android:windowMinWidthMajor">@android:dimen/dialog_min_width_major</item> 
    <item name="android:windowMinWidthMinor">@android:dimen/dialog_min_width_minor</item> 
    <item name="colorControlActivated">@color/md_material_blue_600</item> 
    <item name="android:colorControlHighlight">@color/md_material_blue_600</item> 
    <item name="android:button">@color/md_material_blue_600</item> 
</style> 

<style name="customActionBar"> 
    <item name="android:background">@color/Material_Blue</item> 
</style> 

Как вы можете видеть, что мое приложение имеет некоторые различные темы, но теперь некоторые пользователи попросили меня реализовать функцию, которая может переключить «легкую тему» ​​на «темную тему». Теперь, если я изменю родительскую тему AppTheme.Base на Theme.AppCompat, все приложение получит «темную тему».

Итак, есть ли способ изменить родительскую тему базовой темы? Или что мне нужно сделать, чтобы получить мой результат?

Я читал об этом: https://stackoverflow.com/a/18301723/5327202, я реализовал эти классы, но меняет цвет текста только на белый и ничего больше. (Конечно, я создал другой стиль в xml, по существу, у меня есть копия - отпечатал оригинальную тему, а затем изменил родителя AppTheme.Base на Theme.AppCompat)

Спасибо.

ответ

1

Задайте базовую тему для этого контекста. Обратите внимание, что это нужно вызывать до того, как любые представления будут созданы в Контексте (например, перед вызовом setContentView (View) или inflate (int, ViewGroup)).

check http://developer.android.com/reference/android/content/Context.html#setTheme%28int%29

public void onCreate(Bundle savedInstanceState) { 
    setTheme(android.R.style.Theme); 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_second); 
} 
+0

Хорошо, теперь он работает. Большое спасибо. – CallMeDeftsu4

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