早上好, 我正在xamarin.forms中设计我的第一个应用程序,但是我遇到了一个问题,那就是android中tabbedpage栏的样式。 在iOS上效果很好,但在Android上却有不同的显示,但是我想让两个操作系统上的同类产品都知道该怎么做?
屏幕Android https://ibb.co/cYRLvc4 屏幕iOS https://ibb.co/ysnxBr8
答案 0 :(得分:0)
您应该使用自定义效果,首先将android目标更新为9.0(和支持库) 然后,在您的窗体解决方案中创建“路由效果”:
使用Xamarin.Forms;
namespace YourApp
{
public class NoShiftEffect : RoutingEffect
{
public NoShiftEffect() : base("MyEffect.NoShiftEffect")
{
}
}
}
然后在Android中创建自定义渲染器:
using Android.Support.Design.BottomNavigation;
using Android.Support.Design.Widget;
using Android.Views;
using yournamespace.Droid;
using Xamarin.Forms;
using Xamarin.Forms.Platform.Android;
[assembly:ResolutionGroupName ("MyEffect")]
[assembly:ExportEffect (typeof(NoShiftEffect), "NoShiftEffect")]
namespace yournamespace.Droid
{
public class NoShiftEffect : PlatformEffect
{
protected override void OnAttached ()
{
if (!(Container.GetChildAt(0) is ViewGroup layout))
return;
if (!(layout.GetChildAt(1) is BottomNavigationView bottomNavigationView))
return;
// This is what we set to adjust if the shifting happens
bottomNavigationView.LabelVisibilityMode = LabelVisibilityMode.LabelVisibilityLabeled;
}
protected override void OnDetached ()
{
}
}
}
最后,在您的标签页中:
<TabbedPage.Effects>
<local:NoShiftEffect />
</TabbedPage.Effects>