繁体   English   中英

底部导航栏渐变出现意外

[英]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 的TopColorBottomColor属性,以便可以从AppearanceTracker,因为我不知道如何在实际渲染器中访问 Tracker class 的 Element 属性(以获取自定义 GradientShellPage 的实例变量)。

当然,我的方法失败了,因为我什至没有按照应有的方式使用吸气剂(我急于看到结果)。

这导致渐变的颜色在运行时为 null,但渐变 object 本身不是,因此没有引发错误。

此外,根本不需要外部 class,因为我可以简单地将 (GradientShellPage)Element 传递给外观跟踪器的构造函数,并从那里使用颜色。 这是结果:

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM