1

現在Android上にXamarin Formsアプリを構築しています。一部のデバイスでXamarin.Formsのナビゲーションバーが色を変更しないのはなぜですか?

私は動的にアプリの上部にあるナビゲーションバーの色を変更しようとしています。 Android 4.1 API 17にロックされた古い携帯電話を使用してこれを正常に管理しましたが、動作しないので試したすべての他の携帯電話を使用しました。私が試してみました:

サムスンSM-G388Fを - アンドロイド5.1 API 22

Googleのピクセル - のAndroid 7.1 API

Screenshot - Older phone - works perfectly

Screenshot - Newer phones - does not work - simply inherits page background colour

もともと私はで定義されたDynamicResourceを使用していましたApp.xamlを使用して、使用していた環境に応じてBarBackgroundColourを変更する - Live/Test。他の2つのプロパティBackgroundColorとBarTextColorは正常に動作しています。

   App.Current.Resources["navBarColour"] = App.Current.Resources["red"]; 

私が変更しようとしました:App.xaml.csでのアプリケーションの負荷に

<Color x:Key="navBarColour">#F4721C</Color> 
    <Style TargetType="NavigationPage"> 
      <Setter Property="BackgroundColor" Value="{StaticResource pageBackground}"/> 
      <Setter Property="BarBackgroundColor" x:Key="navBar" Value="{DynamicResource navBarColour}"/> 
      <Setter Property="BarTextColor" Value="{StaticResource textColor}"/> 

     </Style> 

設定

if (Settings.Environment.ToLower() == "live") 
     { 
      Application.Current.Resources["navBarColour"] = Application.Current.Resources["anglianLightBlue"]; 
     } 
     else 
     { 
      Application.Current.Resources["navBarColour"] = Application.Current.Resources["red"]; 
     } 

また、ユーザーは、ここで設定]ページで環境を切り替える能力を持っていますこれはStaticResourceにあり、xamlで直接Color.Blackに設定しようとしましたが、それでも動作しません - どこでも変更する方法が見つからないようです。

私はこれについてグーグルで何か、または同様の問題で誰を見つけることができません。 これを経験した人は誰ですか?もしそうなら、彼らはどのようにこれを解決しましたか?

答えて

2

私はこれが動作しない理由を見つけることができませんでしたが、私は回避策を見つけました。 NavigationBarはページの背景色を継承しています。そのため、ページの背景をバーの色に変更し、残りのコンテンツにコンテナ(ScrollView/ContentView)を貼り付け、そのコンテナの背景をページに着色します背景色これは、所望の効果を与える。 これはなぜ機能しないのか知りたいのですが、これは適切な回避策です。

関連する問題