gpt4 book ai didi

android - Xamarin.Forms.Shell : how to get the bottom TabBar height?

转载 作者:行者123 更新时间:2023-12-04 12:20:32 32 4
gpt4 key购买 nike

我在 上工作Xamarin.Forms.Shell app 使用默认底部 TabBar ,我需要知道 TabBar 高度 调整一些项目。
我找到了获取 StatusBar 的方法高度 在两个平台上there ,但我没有找到 TabBar 的解决方案.
可能吗?我只发现有关更改堆栈上的 TabBar 高度的请求...

最佳答案

我们可以使用 获得高度自定义渲染器
在 AppShell 中

public partial class AppShell : Xamarin.Forms.Shell
{
public static double TabHeight { get; set; }

//...
}
在 iOS 项目中
选项 1:

using App33;
using App33.iOS;
using Foundation;
using UIKit;
using Xamarin.Forms;
using Xamarin.Forms.Platform.iOS;

[assembly: ExportRenderer(typeof(AppShell), typeof(ShellCustomRenderer))]
namespace App33.iOS
{
public class ShellCustomRenderer : ShellRenderer
{
protected override IShellTabBarAppearanceTracker CreateTabBarAppearanceTracker()
{
return new TabBarAppearance();
}

}

public class TabBarAppearance : IShellTabBarAppearanceTracker
{
public void Dispose()
{

}

public void ResetAppearance(UITabBarController controller)
{



}

public void SetAppearance(UITabBarController controller, ShellAppearance appearance)
{
base.ViewWillAppear(animated);

UITabBar myTabBar = this.TabBarController.TabBar;

myTabBar.TintColor = UIColor.Red;
myTabBar.BarTintColor = UIColor.LightGray;
//... you can set style like above in iOS

AppShell.TabHeight = myTabBar.Bounds.Height;

}

public void UpdateLayout(UITabBarController controller)
{

}
}
}
选项 2:
实际上, 的高度UITabbar 在 iOS 上是一个固定值。在 iPhone 8 和之前是 49 和 iPhone X 和之后(全屏)将有一个额外的 safeArea bottom height 。所以如果你只是想得到它(不需要设置高度),你可以直接使用 依赖服务喜欢以下
AppShell.TabHeight = 49 + UIApplication.SharedApplication.Delegate.GetWindow().SafeAreaInsets.Bottom;

在安卓中
 public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{
protected override void OnCreate(Bundle savedInstanceState)
{
TabLayoutResource = Resource.Layout.Tabbar;
ToolbarResource = Resource.Layout.Toolbar;

base.OnCreate(savedInstanceState);
// var hei=SupportActionBar.Height;
Xamarin.Essentials.Platform.Init(this, savedInstanceState);
global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
LoadApplication(new App());


int resourceId =Resources.GetIdentifier("design_bottom_navigation_height", "dimen", this.PackageName);
int height = 0;
if (resourceId > 0)
{
height = Resources.GetDimensionPixelSize(resourceId);
AppShell.TabHeight = height;
}




}
public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults)
{
Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults);

base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
}
}
}

关于android - Xamarin.Forms.Shell : how to get the bottom TabBar height?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64892392/

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