2015-10-21 47 views
2

我一直在琢磨着過去幾天關於Android上的條形顏色的問題。利益相關者希望藍色爲NavigationPage欄的特定陰影,並使用Xamarin表單BarBackground在Android上丟失了

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,這是故意重新設置ActionBar https://bugzilla.xamarin.com/show_bug.cgi?id=22237,但試圖使用相同的NavigationPage對象,並設置模式窗口消失後的值不會更新顏色,無論如何調用。

回答

2

我創建的解決方案是相當髒,我打算做一些更優雅,但要解決這個問題我在

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

或任何你想你的顏色是在MainActivity創建的動作。解決方案是將其傳遞給您的Application類,或者將其傳遞給PCL。然後,根據需要,您可以簡單地調用此按鈕將條重置爲您選擇的顏色。 我發現做一個

Navigation.PushModalAsync 

後立即調用它似乎淨乾淨的妝效。在我的測試中,我沒有注意到如果我在這一點上做了默認顏色。

0

我有同樣的問題。對我來說,解決方案是在頁面中插入一個「空白ToolBarItem」。

這樣,它的工作原理...不是最好的解決方案,但工作。這是Xamarin.Forms中的一個錯誤。

+0

你是對的:這是Xamarin.Forms中的一個錯誤。這裏有兩個相關的bugzilla條目:https://bugzilla.xamarin.com/show_bug.cgi?id=30166和https://bugzilla.xamarin.com/show_bug.cgi?id=32822。 – Falko

+0

我也有一些運氣使用所需的應用程序顏色創建基礎樣式。出於某種原因,三星喜歡將操作欄恢復爲這種水色。 http://jgilfelt.github.io/android-actionbarstylegenerator/ –

2

使用Christopher Richmond的想法,我提出了以下相當精益的解決方法。

把這個地方你MainActivity.OnCreate方法的末尾:

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

如果需要,您可以用ModalPushing取代Color.Red與您所選擇的顏色和ModalPopping