【问题标题】:Xamarin Forms BarBackground Lost on AndroidXamarin Forms BarBackground 在 Android 上丢失
【发布时间】:2016-07-12 01:35:08
【问题描述】:

过去几天我一直在努力解决有关 Android 上的条形颜色的问题。利益相关者希望 NavigationPage 栏具有特定的蓝色阴影,虽然最初可以使用

   private Page GetNavigationPage(Page innerPage){
        var navigation =  new NavigationPage (innerPage);
        navigation.BarBackgroundColor= Color.FromHex ("#00263A");
        navigation.BackgroundColor = Color.FromHex ("#00263A");
            return navigation;
    }

我们发现在使用 Navigation.PushModalAsync 方法时,一旦调用页面,栏的颜色就会变成浅蓝色。根据 Xamarin,这是有意根据 https://bugzilla.xamarin.com/show_bug.cgi?id=22237 重置 ActionBar,但尝试使用相同的 NavigationPage 对象并在模式窗口消失后设置值不会更新颜色,无论如何调用。

【问题讨论】:

    标签: android xamarin xamarin.forms


    【解决方案1】:

    我创建的解决方案相当脏,我打算做一些更优雅的东西,但为了解决这个问题,我在 MainActivity 中创建了一个动作

     ActionBar.SetBackgroundDrawable(new ColorDrawable(Color.ParseColor("#00263A")));
    

    或者任何你想要的颜色。解决方案是将其传递给您的 Application 类,或者将其传递给某些服务以将其公开给 PCL。然后根据需要,您可以简单地调用它来将条重置为您选择的颜色。 我发现在做完之后立即调用它

    Navigation.PushModalAsync
    

    似乎可以得到最干净的结果。在我的测试中,如果我此时这样做,我没有注意到会出现默认颜色。

    【讨论】:

      【解决方案2】:

      使用 Christopher Richmond 的想法,我想出了以下相当精简的解决方法。

      把它放在MainActivity.OnCreate 方法的末尾:

      Xamarin.Forms.Application.Current.ModalPopping += (sender, e) => {
          ActionBar.SetBackgroundDrawable(new ColorDrawable(Color.Red.ToAndroid()));
      };
      

      如果需要,您可以将Color.Red 替换为您选择的颜色,并将ModalPopping 替换为ModalPushing

      【讨论】:

        【解决方案3】:

        我遇到了同样的问题。我的解决方案是在页面中插入“空白ToolBarItem”。

        这样,它可以工作...不是最好的解决方案,但是可以。这是 Xamarin.Forms 中的一个错误。

        【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-07-08
        • 2019-11-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多