[英]Bottom navigation bar gradient has unexpected appearance
我使用Shell页面让我的应用程序工作,因为它对布局外观和整体易用性有很好的控制,到目前为止它对我很有帮助。
渐变应该从左侧颜色平滑地转换到右侧颜色,这两种颜色都是蓝色。
渐变绘制已应用于工具栏/顶部导航栏,它按预期工作,但是当我对底部导航栏重复相同的过程时,出现了一些奇怪的伪影。
在纵向中,条的最末端是黑色的,然后横向看到渐变仅适用于顶部的细条。 当应用程序的 MainPage 属性已设置时,第三个工件也会出现,即使页面已被 PopToRoot 关闭,我也可以在下面看到我拥有的确认按钮。
如果我在屏幕上拖动,我可以看到渐变边缘有点偏离,边缘呈锯齿状。
使用的颜色:
#0033D5
#002394
工具栏(工作)
protected override IShellToolbarAppearanceTracker CreateToolbarAppearanceTracker()
{
return new GradientShellToolbarAppearanceTracker(this);
}
public override void SetAppearance(Android.Support.V7.Widget.Toolbar toolbar, IShellToolbarTracker toolbarTracker, ShellAppearance appearance)
{
base.SetAppearance(toolbar, toolbarTracker, appearance);
var gradient = new GradientDrawable(
GradientDrawable.Orientation.LeftRight,
new int[] {
GradientShellPageColorTracker.ToolbarTopColor.ToAndroid(),
GradientShellPageColorTracker.ToolbarBottomColor.ToAndroid() }
);
toolbar.SetBackground(gradient);
}
底部导航栏(未按预期工作)
protected override IShellBottomNavViewAppearanceTracker CreateBottomNavViewAppearanceTracker(ShellItem shellItem)
{
return new GradientShellBottomTabBarAppearanceTracker(this, shellItem);
}
public override void SetAppearance(BottomNavigationView bottomView, IShellAppearanceElement appearance)
{
base.SetAppearance(bottomView, appearance);
var gradient = new GradientDrawable(
GradientDrawable.Orientation.RightLeft,
new int[] {
GradientShellPageColorTracker.BottomTabBarTopColor.ToAndroid(),
GradientShellPageColorTracker.BottomTabBarBottomColor.ToAndroid()
});
bottomView.SetBackground(gradient);
}
渐变定义代码的问题与调用错误的方法无关,但我错误地将颜色分配给颜色跟踪器 class,我创建该颜色跟踪器是为了存储 GradientShellPage 的TopColor
和BottomColor
属性,以便可以从AppearanceTracker,因为我不知道如何在实际渲染器中访问 Tracker class 的 Element 属性(以获取自定义 GradientShellPage 的实例变量)。
当然,我的方法失败了,因为我什至没有按照应有的方式使用吸气剂(我急于看到结果)。
这导致渐变的颜色在运行时为 null,但渐变 object 本身不是,因此没有引发错误。
此外,根本不需要外部 class,因为我可以简单地将 (GradientShellPage)Element 传递给外观跟踪器的构造函数,并从那里使用颜色。 这是结果:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.