Как изменить BarTextColor с белого цвета по умолчанию в проекте Xamarin Forms Android?

Создал новый проект Xamarin и попытался изменить цвет фона панелей навигации (BarBackgroundColor) и цвет текста (BarTextColor) внутри него. Кажется, работает только BarBackgroundColor, а не BarTextColor. Ниже приведен ресурс в App.xaml.

        <Color x:Key = "digiGreen">#ADC710</Color>
        <Color x:Key = "whiteColor">#FFFFFF</Color>        

     <Style TargetType = "NavigationPage" ApplyToDerivedTypes = "True">
        <!-- navigation bar to have digiGreen color -->
        <Setter Property = "BarTextColor"
                Value = "{StaticResource digiGreen}"/>
        <Setter Property = "BarBackgroundColor" 
                Value = "{StaticResource whiteColor}"/>
    </Style>

Текущая версия Xamarin, на которой я работаю, — 4.12.xx, а симулятор — Android 9.0 — API 28.

Xamarin формирует сведения о версии? Спасибо!

FreakyAli 10.04.2019 16:23

версия 3.4.0.1008975

Yogi 10.04.2019 16:25

Значит, это работает с цветом полосы, но не с цветом текста?

FreakyAli 10.04.2019 16:26

точно.. BarBackgroundColor работает, но не BarTextColor.

Yogi 10.04.2019 16:28

Могу я посмотреть, как вы инициализировали свой код NavigationPage?

FreakyAli 10.04.2019 16:30

общественное приложение () { InitializeComponent (); Главная страница = новая страница навигации (новая главная страница()); }

Yogi 10.04.2019 16:31

Вы используете AppCompat Backend?

FreakyAli 10.04.2019 16:34

"общедоступный класс MainActivity: global::Xamarin.Forms.Platform.Android.FormsAppCompatActivit‌​y" Нет, я думаю

Yogi 10.04.2019 16:37
0
8
1 813
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

How to change BarTextColor from the default white color in Xamarin Forms Android Project?

Я бы рекомендовал вам использовать приведенные ниже коды для установки свойств NavigationPage:

public App()
{
    InitializeComponent();

    MainPage = new NavigationPage(new MainPage());

    ((NavigationPage)Application.Current.MainPage).BarBackgroundColor = Color.Black;
    ((NavigationPage)Application.Current.MainPage).BarTextColor = Color.OrangeRed;
}

Если вы хотите изменить цвет на определенной странице, измените его в Конструктор страниц:

public Page1 ()
{
    InitializeComponent ();

    ((NavigationPage)Application.Current.MainPage).BarBackgroundColor = Color.Yellow;
    ((NavigationPage)Application.Current.MainPage).BarTextColor = Color.Red;
}

Примечание: Не меняйте его в Конструкторе MainPage, потому что вы не можете получить Application.Current.MainPage в это время.

В xaml я тестировал его в Android 9.0, и моя версия xamarin.forms — 3.4.0.1008975. Я использую ваш код, и он работает на моей стороне.

Обновлять:

Чтобы изменить TextColor toolbaritem : Перейдите в Android Project-> Resources -> values -> styles.xml, добавьте:

<item name = "android:actionMenuTextColor">#ADC710</item>

Чтобы изменить TextColor back arrow :

Перейдите в Android Project-> Resources -> values -> styles.xml, добавьте:

<item name = "drawerArrowStyle">@style/DrawerArrowStyle</item>

И стиль такой:

  <style name = "DrawerArrowStyle" parent = "@style/Widget.AppCompat.DrawerArrowToggle">
    <item name = "spinBars">true</item>
    <item name = "color">#ADC710</item>
  </style>

BarTextColor повлияет только на цвет Navigationbar.title в Android. Это отличается из-за другой платформы.

См.: изменить цвет кнопки «назад» на панели навигации в xamarin-android

@Yogi Я только что создал эмулятор Android 9.0, и он у меня работает. Вы можете попробовать другой эмулятор или реальное устройство?

nevermore 11.04.2019 11:01

@Yogi BarTextColor работает или работает BarBackgroundColor? В своем комментарии вы сказали, что BarBackgroundColor работает, а здесь вы говорите, что BarTextColor работает... Цвет фона вашей страницы белый, чтобы он выглядел так же, как белый цвет BarBackgroundColor, который вы установили в своем коде.

nevermore 11.04.2019 11:15

извините за мою ошибку, BarBackgroundColor работает, но не BarTextColor. BarTextColor всегда кажется белым в Android, но работает (то есть цвет меняется) в IOS

Yogi 11.04.2019 11:18

Даже ваш код не работает в проекте Android, BarTextColor всегда белый

Yogi 11.04.2019 11:24

@Yogi Вы имеете в виду цвет заголовка или другого текста? Цвет элементов панели инструментов?

nevermore 11.04.2019 11:34

Я имею в виду оба... Кнопка «Назад» и элемент панели инструментов справа, который находится на моей домашней странице. Этот текст элемента панели инструментов и символ < назад всегда белые

Yogi 11.04.2019 11:35

Нет, BarTextColor, похоже, изменяет только заголовок, а не элемент панели инструментов в Android.

nevermore 11.04.2019 11:37

Ok. У меня пока нет титула. Но как изменить цвет кнопки «Назад» в Android. И почему это работает в IOS. Более того, я тестирую на своем Galaxy S9.

Yogi 11.04.2019 11:42

Теперь работает отлично, но все еще непонятно, почему он работает на IOS, а не на Android.

Yogi 11.04.2019 12:42

Для изменения BarTextColor и BarBackgroundColor NavigationPage вы можете: В app.xaml добавьте код ниже:

<ResourceDictionary>
            <Style TargetType = "NavigationPage">
                <Setter Property = "BarBackgroundColor" Value = "White"/>
                <Setter Property = "BarTextColor" Value = "Black"/>
            </Style>
        </ResourceDictionary>

Другие вопросы по теме