c# xamarin xamarin.forms

c# - Cambiar los colores de la barra de acción



xamarin xamarin.forms (1)

Necesita crear un tema personalizado en droid / resource / styles.xml. y también necesita aplicar este tema en su actividad principal

Aplicar tema en MainActivity

[Activity(Label = "YourProject.Droid", Icon = "@drawable/icon", Theme = "@style/MyTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)] public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity

Agregue un tema personalizado en el archivo Style.XML

<?xml version="1.0" encoding="UTF-8"?> <resources> <style name="MyTheme" parent="MyTheme.Base"> </style> <!-- Base theme applied no matter what API --> <style name="MyTheme.Base" parent="Theme.AppCompat.Light.DarkActionBar"> <!--If you are using revision 22.1 please use just windowNoTitle. Without android:--> <item name="windowNoTitle">true</item> <!--We will be using the toolbar so no need to show ActionBar--> <item name="windowActionBar">false</item> <!-- Set theme colors from http://www.google.com/design/spec/style/color.html#color-color-palette--> <!-- colorPrimary is used for the default action bar background --> <item name="colorPrimary">#2196F3</item> <!-- colorPrimaryDark is used for the status bar --> <item name="colorPrimaryDark">#1976D2</item> <!-- colorAccent is used as the default value for colorControlActivated which is used to tint widgets --> <item name="colorAccent">#FF4081</item> <!-- You can also set icon, Title color --> <item name="textColorPrimary">#000000</item> <!-- You can also set colorControlNormal, colorControlActivated colorControlHighlight and colorSwitchThumbNormal. --> <item name="windowActionModeOverlay">true</item> <item name="android:datePickerDialogTheme">@style/AppCompatDialogStyle</item> <item name="android:actionBarPopupTheme">@style/CustomActionBarPopupTheme</item> </style> <style name="AppCompatDialogStyle" parent="Theme.AppCompat.Light.Dialog"> <item name="colorAccent">#FF4081</item> </style> <style name="CustomActionBarPopupTheme" parent="android:ThemeOverlay.Material.Light"> <item name="android:colorBackground">#FFFFFF</item> <item name="android:textColor">#000000</item> </style> </resources>

Para más comprensión

Necesito cambiar los colores de la barra de acciones, pero cuando cambio estos datos en la aplicación de Android, no cambia los colores dinámicamente (a diferencia de iOS).

Necesito cuando cambie el color predeterminado de la barra de acción a blanco (color de fondo), el sistema cambiará automáticamente el título y devolverá los colores de las flechas a negro (son blancos e invisibles). Como dije antes, en la aplicación iOS solo con este código, el sistema ya hace este cambio automáticamente, sin embargo, para Android no sé cómo hacer este mismo efecto.

Sigue el código a continuación:

private void ChangeActionBarColor() { var navigationPage = Detail as NavigationPage; navigationPage.BarBackgroundColor = Ambiente.Instance.NavigationColor; navigationPage.BarTextColor = Ambiente.Instance.NavigationItemColor; Title = Ambiente.Instance.NavigationTitle; }