在我的Xamarin Forms Android应用程序中,我想根据用户在运行时选择的主题更改启动画面的颜色。此更改应该会影响应用程序的下一次运行。
我尝试使用内置的splash_screen.xml并使用Splash.axml文件,但我无法弄清楚如何(如果可能的话)将启动画面的背景颜色设置为主题中定义的颜色。
这可能吗?
答案 0 :(得分:0)
我尝试使用内置的splash_screen.xml并使用Splash.axml文件,但我无法弄清楚如何(如果可能的话)将启动画面的背景颜色设置为主题中定义的颜色。
您可以为splashScreen定义主题,然后将android:windowBackground
设置为特定颜色:
styles.xml:
<resources>
<style name="AppTheme">
<item name="android:windowBackground">@color/colorPrimary</item>
<item name="android:windowNoTitle">true</item>
</style>
<style name="AppTheme2">
<item name="android:windowBackground">@color/colorAccent</item>
<item name="android:windowNoTitle">true</item>
</style>
...
</resources>
SplashScreen.cs(不要忘记将SplashScreen活动设置为mainlauncher):
[Activity(Label = "SplashActivity",MainLauncher =true)]
public class SplashActivity : Activity
{
protected override void OnCreate(Bundle savedInstanceState)
{
ISharedPreferences preferences=GetSharedPreferences("SplashThemeId", FileCreationMode.Private);
var themeName=preferences.GetString("themeName","AppTheme");
int themeId = Resource.Style.AppTheme ;
switch (themeName)
{
case "AppTheme":
themeId = Resource.Style.AppTheme;
break;
case "AppTheme2":
themeId = Resource.Style.AppTheme2;
break;
}
SetTheme(themeId);
base.OnCreate(savedInstanceState);
...
正如您所注意到的,我使用SharedPreference
在运行时存储用户选择的主题。您也可以将Android Settings用于相同目的。
这是完整的demo。它是原生的android项目,但它与表单项目相同。
答案 1 :(得分:0)
在我完成的所有研究以及我在代码中尝试过的事情之后,我得出的结论是,无法动态设置初始活动的颜色。我会用中性颜色来飞溅。