我在以编程方式切换活动主题时遇到问题。我有一个路由器活动,该活动根据某些条件决定要路由的活动。路由器活动可以在两个时间打开:具有启动屏幕主题的应用程序启动时间,以及从某处调用startactivity以使用NoDisplay或Transparent主题做出路由器决定。我已经在清单中设置了启动主题,并且效果很好。但是在调用startactivity时,我无法在运行时更改为透明主题。它显示的是黑色背景色,而不是透明的。
Routeractivity:
override fun onCreate(savedInstanceState: Bundle?) {
val transparent = intent.extras?.getBoolean("Need_Transparent")?:false
if(transparent) setTheme(R.style.Theme_Transparent)
super.onCreate(savedInstanceState)
//no setContentView()
}
styles.xml
<style name="Apptheme" parent="Theme.AppCompat.Light.DarkactionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="coloraccent">@color/coloraccent</item>
</style>
<style name="Theme.Transparent" parent="android:Theme">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">true</item>
<item name="android:backgroundDimEnabled">false</item>
</style>
<style name="Theme.Splash" parent="android:Theme">
<item name="android:windowBackground">@android:color/holo_green_light</item>
</style>
AndroidManifest.xml:
<activity
android:name=".Routeractivity"
android:theme="@style/Theme.Splash">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
那么我该如何使用两个主题来实现Routeractivity:Splash(清单中的默认设置)和Transparent主题(通过其他活动的startactivity打开)。