我用透明风格打开活动,这意味着它在开始时有这个主题:
<style name="Theme.Transparent" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowIsTranslucent">true</item>
<item name="android:statusBarColor">@android:color/transparent</item>
<item name="android:windowBackground">@android:color/transparent</item>
</style>
片刻之后我改变了主题
setTheme(R.style.AppThemeWithActionBar);
看起来像这样:
<style name="AppThemeWithActionBar" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="windowNoTitle">false</item>
<item name="android:windowNoTitle">false</item>
<item name="android:windowIsTranslucent">false</item>
<item name="colorPrimary">@color/primaryDark</item>
<item name="colorPrimaryDark">@color/primary</item>
<item name="colorAccent">@color/accent</item>
</style>
但不幸的是,当我在更改主题后调用getSupportActionBar()时我得到null,是什么原因?
答案 0 :(得分:1)
设置样式有两种方法:
使用AndroidManifest.xml
整个申请表:
<application android:theme="@style/CustomTheme" >
</application>
个人活动:
<application>
<activity android:theme="@style/CustomTheme" >
...
</activity>
</application>
以编程方式:
public void onCreate(Bundle savedInstanceState) {
setTheme(R.style.CustomTheme);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
}
答案 1 :(得分:0)
如果不重新加载整个活动,就无法在运行时更改主题。因为我不想重新加载活动,所以我将不得不停止使用ActionBar并开始使用工具栏。