gpt4 book ai didi

xamarin.forms - 如何在 xamarin.forms 中获取状态栏高度?

转载 作者:行者123 更新时间:2023-12-02 06:28:28 29 4
gpt4 key购买 nike

我正在尝试在我的应用程序中获取状态/操作栏高度。
我得到了一些我们如何在原生 android 中获得它的方法。
我们可以在 xamarin.forms 中获取状态/操作栏高度吗?如果是,那么如何?
如果有人对此有所了解,请提供帮助。
enter image description here

最佳答案

您可以通过创建自己的依赖服务来做到这一点。 (https://developer.xamarin.com/guides/xamarin-forms/application-fundamentals/dependency-service/introduction/)

在您的共享代码中,创建一个接口(interface),例如 IStatusBar:

public interface IStatusBar
{
int GetHeight();
}

为 Android 平台添加实现:
[assembly: Dependency(typeof(StatusBar))]
namespace StatusBarApp.Droid
{
class StatusBar : IStatusBar
{
public static Activity Activity { get; set; }

public int GetHeight()
{
int statusBarHeight = -1;
int resourceId = Activity.Resources.GetIdentifier("status_bar_height", "dimen", "android");
if (resourceId > 0)
{
statusBarHeight = Activity.Resources.GetDimensionPixelSize(resourceId);
}
return statusBarHeight;
}
}
}

Activity 属性是从 MainActivity.cs 设置的:
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{
protected override void OnCreate(Bundle bundle)
{
TabLayoutResource = Resource.Layout.Tabbar;
ToolbarResource = Resource.Layout.Toolbar;

base.OnCreate(bundle);

global::Xamarin.Forms.Forms.Init(this, bundle);

StatusBar.Activity = this;

LoadApplication(new App());
}
}

这是您从共享代码中调用实现的方式:
int statusBarHeight = DependencyService.Get<IStatusBar>().GetHeight();

IOS平台实现:
[assembly: Dependency(typeof(StatusBar))]
namespace StatusBarApp.iOS
{
class StatusBar : IStatusBar
{
public int GetHeight()
{
return (int)UIApplication.SharedApplication.StatusBarFrame.Height;
}
}
}

关于xamarin.forms - 如何在 xamarin.forms 中获取状态栏高度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48276053/

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