gpt4 book ai didi

Xamarin.Forms - 更改状态栏颜色

转载 作者:行者123 更新时间:2023-12-03 13:40:41 24 4
gpt4 key购买 nike

我进行了搜索,但找不到是否可以从我的可移植代码中更改每个平台的 StatusBar 颜色? (对于 Android, iOS & WinPhone 8.1)

public App()
{
// Change the StatusBar color
MainPage = new MainPageUser();
}

最佳答案

几年后我又回到这个答案来修复它,因为我的答案是错误的,即使它已被接受为正确答案。我现在已经修好了。

我误读了想要更改导航栏的问题,或者当时它在 Android 中的工作方式有所不同。

我认为至少这是一个更好的答案,应该更好地帮助更改 Android 和 iOS 中导航栏的颜色。

将此代码添加到您的 Xamarin.Forms 项目

public interface IStatusBarPlatformSpecific
{
void SetStatusBarColor(Color color);
}

将此类添加到您的 Android 项目中
[assembly: Dependency(typeof(MyDemo.Droid.CustomRenderers.Statusbar))]
namespace MyDemo.Droid.CustomRenderers
{
public class Statusbar : IStatusBarPlatformSpecific
{
public Statusbar()
{
}

public void SetStatusBarColor(Color color)
{
// The SetStatusBarcolor is new since API 21
if (Build.VERSION.SdkInt >= BuildVersionCodes.Lollipop)
{
var androidColor = color.AddLuminosity(-0.1).ToAndroid();
//Just use the plugin
CrossCurrentActivity.Current.Activity.Window.SetStatusBarColor(androidColor);
}
else
{
// Here you will just have to set your
// color in styles.xml file as shown below.
}
}
}
}

添加此 CurrentActivityPlugin到您的项目

现在您可以像这样更改表单项目中的颜色
var statusbar = DependencyService.Get<IStatusBarPlatformSpecific>();
statusbar.SetStatusBarColor(Color.Green);

备注 上面的 else 语句。如果您使用的是比 21 更旧的构建版本,则需要像这样将您的颜色硬编码到您的 Android 项目中的 styles.xml 中
<?xml version="1.0" encoding="utf-8" ?>
<resources>
<style name="MainTheme.Base" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:statusBarColor">#544054</item>
</style>
</resources>

对于 iOS,它的类似

将此添加到您的 Info.plist ( more docs here )
<key>UIStatusBarStyle</key>
<string>UIStatusBarStyleLightContent</string>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>

并将此代码添加到 StatusBar 类的 iOS 版本中的 SetStatusBarColor 方法中
UIView statusBar = UIApplication.SharedApplication.ValueForKey(
new NSString("statusBar")) as UIView;

if (statusBar != null && statusBar.RespondsToSelector(
new ObjCRuntime.Selector("setBackgroundColor:")))
{
// change to your desired color
statusBar.BackgroundColor = Color.FromHex("#7f6550").ToUIColor();
}

我在 how to set the color of the statusbar from Xamarin.Forms 上写了一篇更详细的博文如果有人感兴趣。它只讨论 Android 和 iOS,但应该让您了解如何使用其他平台。

关于Xamarin.Forms - 更改状态栏颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37993741/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com