我的应用有默认主题。我使用Android中的Style文件自定义此主题。但我正在创建一个登录页面,我想要使用其他主题。我怎么能这样做?
答案 0 :(得分:1)
我不确定你能做到这一点,因为Android主题可以应用于Android中的活动,但是Xamarin.Forms在一个活动中“运行”,所以你必须在Xamarin.Forms中进行样式化。查看开发人员能够在运行时更改主题的this post on Xamarin Forums,然后重新启动活动,然后重新启动他的Xamarin.Forms应用程序。
答案 1 :(得分:0)
如果您的Xamarin Forms应用程序仅使用一项活动,那么这非常简单。此解决方案适用于棒棒糖及其后的版本。您可以使用特定于平台的Android代码来做到这一点:
public class StatusBarStyleManager : IStatusBarStyleManager
{
public void SetStatusBarColor(Android.Graphics.Color color)
{
if (Build.VERSION.SdkInt >= BuildVersionCodes.M)
{
Device.BeginInvokeOnMainThread(() =>
{
var currentWindow = GetCurrentWindow();
currentWindow.DecorView.SystemUiVisibility = (StatusBarVisibility)SystemUiFlags.LightStatusBar;
currentWindow.SetStatusBarColor(color);
});
}
}
Window GetCurrentWindow()
{
//Note this is a nuget package for retrieving the activity.
var window = CrossCurrentActivity.Current.Activity.Window;
// clear FLAG_TRANSLUCENT_STATUS flag:
window.ClearFlags(WindowManagerFlags.TranslucentStatus);
// add FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS flag to the window
window.AddFlags(WindowManagerFlags.DrawsSystemBarBackgrounds);
return window;
}
}
然后只需在页面中使用此实现,即可设置其在状态栏中显示的特定颜色。
在我自己的项目中需要此文章时,受到本文的启发: https://evgenyzborovsky.com/2018/08/20/dynamically-changing-the-status-bar-appearance-in-xamarin-forms/