Создал новый проект 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.
версия 3.4.0.1008975
Значит, это работает с цветом полосы, но не с цветом текста?
точно.. BarBackgroundColor работает, но не BarTextColor.
Могу я посмотреть, как вы инициализировали свой код NavigationPage?
общественное приложение () { InitializeComponent (); Главная страница = новая страница навигации (новая главная страница()); }
Вы используете AppCompat
Backend?
"общедоступный класс MainActivity: global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity" Нет, я думаю
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, и он у меня работает. Вы можете попробовать другой эмулятор или реальное устройство?
@Yogi BarTextColor работает или работает BarBackgroundColor? В своем комментарии вы сказали, что BarBackgroundColor работает, а здесь вы говорите, что BarTextColor работает... Цвет фона вашей страницы белый, чтобы он выглядел так же, как белый цвет BarBackgroundColor, который вы установили в своем коде.
извините за мою ошибку, BarBackgroundColor работает, но не BarTextColor. BarTextColor всегда кажется белым в Android, но работает (то есть цвет меняется) в IOS
Даже ваш код не работает в проекте Android, BarTextColor всегда белый
@Yogi Вы имеете в виду цвет заголовка или другого текста? Цвет элементов панели инструментов?
Я имею в виду оба... Кнопка «Назад» и элемент панели инструментов справа, который находится на моей домашней странице. Этот текст элемента панели инструментов и символ < назад всегда белые
Нет, BarTextColor, похоже, изменяет только заголовок, а не элемент панели инструментов в Android.
Ok. У меня пока нет титула. Но как изменить цвет кнопки «Назад» в Android. И почему это работает в IOS. Более того, я тестирую на своем Galaxy S9.
Теперь работает отлично, но все еще непонятно, почему он работает на IOS, а не на Android.
Для изменения BarTextColor и BarBackgroundColor NavigationPage вы можете: В app.xaml добавьте код ниже:
<ResourceDictionary>
<Style TargetType = "NavigationPage">
<Setter Property = "BarBackgroundColor" Value = "White"/>
<Setter Property = "BarTextColor" Value = "Black"/>
</Style>
</ResourceDictionary>
Xamarin формирует сведения о версии? Спасибо!