4

私のXamarin.FormsプロジェクトでMaterialテーマを次のコードで有効にしましたが、Android(Lollipop and Marshmallow)ではステータスバー(時計、等)が変化しない。それは常に黒のままです。 私は既に多くのフォーラムとブログを読んでいますが、多くの組み合わせを試しましたが、私はこのステータスバーを色分けできません。Xamarinフォーム:Androidのスタイルスタイルのステータスバーの色をカスタマイズする

MainActivity.cs

[Activity(Theme = "@style/MyTheme", Label = "MyApp", Icon = "@drawable/AppIcon", ScreenOrientation = ScreenOrientation.Portrait, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)] 

値-V21/style.xml

<resources> 
    <style name="MyTheme.Splash" parent="android:Theme.Material.Light">  
    <item name="android:windowBackground">@drawable/SplashScreen</item> 
    <item name="android:windowNoTitle">true</item> 
    </style> 
    <style name="MyTheme" parent="android:Theme.Material.Light"> 
    <item name="android:windowDrawsSystemBarBackgrounds">false</item> 
    <item name="android:colorPrimary">@color/Brand</item> 
    <item name="android:textColorPrimary">@color/White</item> 
    <item name="android:statusBarColor">@color/BrandDark</item> 
    <item name="android:colorPrimaryDark">@color/BrandDark</item> 
    <item name="android:colorAccent">@color/Brand</item> 
    <item name="android:textColor">@color/Brand</item>  
    </style> 
</resources> 

値/ colors.xml

<resources> 
    <color name="SplashBackground">#f78b2b</color> 
    <color name="Brand">#f78b2b</color> 
    <color name="BrandDark">#e47108</color> 
    <color name="White">#ffffff</color> 
</resources> 

おかげFまたは任意のヘルプ!

答えて

4

成功するには、this Tutorialに従ってください。

は、基本的にはFormsAppCompatActivity代わりのFormsApplicationActivityTheme.AppCompat.Light.NoActionBarの代わりTheme.Material.Lightを使用する必要があります。

+0

ありがとうございました!すべての設定が表示される場所またはユーザーガイドがありますか?たとえば、テキストエントリのバーの色を変更したり、ボタンの影を削除するなどです。 – Stefano

+0

これは通常、Android開発ガイドで定義されています。 http://developer.android.com/training/material/theme.htmlは良い出発点です。しかし、AppCompatとの組み合わせでは、ちょっと気になるところがあります。 –

4

は、他のソリューションは、最も簡単に、MainActivity.csの方法OnCreateのに追加:

Window window = this.Window; window.ClearFlags(WindowManagerFlags.TranslucentStatus); window.AddFlags(WindowManagerFlags.DrawsSystemBarBackgrounds); window.SetStatusBarColor(Android.Graphics.Color.Rgb(116, 181, 13));

+0

残念ながら、xamarinはこう言います:** "Java.Lang.NoSuchMethodError:name = 'setStatusBarColor' signature = '(I)V'のLandroid/view/Window; ** 私はxamarinが嫌い、何も動作することは保証されていません。なぜ彼らは最初にそれをリリースするのですか? –

+0

完全に動作します。ありがとう。 –

1

同等のJavaのバージョンからの翻訳:私は受け入れ答えと同じだった

if (Build.VERSION.SdkInt >= BuildVersionCodes.Lollipop) 
{ 
    // clear FLAG_TRANSLUCENT_STATUS flag: 
    Window.ClearFlags(Android.Views.WindowManagerFlags.TranslucentStatus); 

    //Window.ClearFlags(WindowManager.Pa WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); 
    Window.AddFlags(Android.Views.WindowManagerFlags.DrawsSystemBarBackgrounds); 

    // finally change the color 
    Window.SetStatusBarColor(new Color(ContextCompat.GetColor(this, Resource.Color.colorPrimaryDark))); 
} 
0

。私たちのプロジェクトのうちの一つに取り組んでいたが、他のプロジェクトには取り組まなかった。

私はこの特定の問題の解決策を見たことがないので、私はここで最初になっています。

マニフェストの代わりにassemblyInfo.csで使用権限を宣言した場合、ステータスバーが期待どおりに機能しなくなります。

アクティビティごとに個別に設定しても、アクティビティに移行してもまだ動作しません。したがって、唯一の方法は、uses-permissionステートメントをマニフェストに移動することです。

うまくいけば、私は誰かを助けることができます!

関連する問題