Есть ли способ настроить цветовую схему вкладок на объекте Xamarin.Forms.TabbedPage
, чтобы он не принимал внешний вид целевой платформы по умолчанию?
Я хочу изменить цвет шрифта, фон и цвет текущей выбранной вкладки.
Есть ли способ настроить цветовую схему вкладок на объекте Xamarin.Forms.TabbedPage
, чтобы он не принимал внешний вид целевой платформы по умолчанию?
Я хочу изменить цвет шрифта, фон и цвет текущей выбранной вкладки.
Я предлагаю использовать настраиваемый рендерер.
Вот пример для iOS:
[assembly: ExportRenderer(typeof(TabbedPage), typeof(TabbedPageRenderer))]
namespace MyApp.iOS
{
public class TabbedPageRenderer : TabbedRenderer
{
protected override void OnElementChanged(VisualElementChangedEventArgs e)
{
base.OnElementChanged(e);
TabBar.TintColor = UIColor.White;
TabBar.BarTintColor = UIColor.Black;
TabBar.BackgroundColor = UIColor.Gray;
}
}
}
Просто пропустите этот класс в проекте Xamarin.iOS.
Для Xamarin.Android вы также можете использовать настраиваемое средство визуализации, чтобы добиться того же. Реализация настраиваемого средства визуализации для Android отличается от версии для iOS.
Поздно на вечеринку.
Теперь вы можете изменить цвет фона страницы с вкладками следующим образом.
BarBackgroundColor = Color.Black;
Ссылки ниже могут помочь вам больше
Как изменить цвет индикатора страницы с вкладками в Xamarin .Droid?
http://thatcsharpguy.com/post/platformtabbedpage-xamarin-forms-en/ < / а>
В Xamarin.Forms
нет встроенного способа, но это действительно легко сделать в ваших проектах, ориентированных на платформу. например с помощью UIAppearance на iOS
.
На странице с вкладками, чтобы изменить цвет заголовка в формах xamarin, а не в собственном Android.
Код страницы с вкладками:
class MainPage : TabbedPage
{
LoginManager app;
public MainPage(LoginManager ilm)
{
app = ilm;
Title = "Infrastructure";
Icon = "server.png";
this.BarTextColor = Color.White;
this.BarBackgroundColor = Color.Blue;
Children.Add(new AssetsView());
Children.Add(new ServiceView());
ToolbarItem tbi = new ToolbarItem() {
Text = "Logout",
Order = ToolbarItemOrder.Secondary,
Priority = 0,
};
Код AssetView:
public AssetView()
{
Title = "Assets";
this.BackgroundColor = Color.FromHex("D3D3D3");
list = new AssetsList();
searchbar = new SearchBar()
{
Placeholder = "Search",
TextColor = Color.Black,
BackgroundColor = Color.White,
CancelButtonColor = Color.Black,
PlaceholderColor = Color.Black
};
Код ServiceView:
public class ServiceView : ContentPage
{
ServiceList list;
SearchBar searchbar;
public ServiceView()
{
Title = "Services";
this.BackgroundColor = Color.FromHex("D3D3D3");
list = new ServiceList();
searchbar = new SearchBar()
{
Placeholder = "Search",
TextColor = Color.Black,
BackgroundColor = Color.White,
CancelButtonColor = Color.Black,
PlaceholderColor = Color.Black
};
Я могу добиться этого в Android, выполнив следующие действия:
Преобразуйте Current.MainPage в TabbedPage - это позволит вам установить свойства.
((TabbedPage)Current.MainPage).BarBackgroundColor = Color.FromHex(settings.AppSecondaryColour);
Вы должны иметь возможность изменить другие свойства таким же образом. Я еще НЕ тестировал это в IOS.
Сделать это можно так:
<TabbedPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:d="http://xamarin.com/schemas/2014/forms/design"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
xmlns:views="clr-namespace:SilCoyLuhn.Views"
x:Class="SilCoyLuhn.Views.MainPage"
BarBackgroundColor="{StaticResource Primary}"
BarTextColor="{StaticResource LightTextColor}">
<TabbedPage.Resources>
<ResourceDictionary>
<Color x:Key="Primary">#9DD69F</Color>
<Color x:Key="Accent">#E1F4E0</Color>
<Color x:Key="LightTextColor">#999999</Color>
</ResourceDictionary>
</TabbedPage.Resources>
</TabbedPage>
В <TabbedPage.Resources>
я определяю используемые статические ресурсы как BarBackgroundColor
и BarTextColor
.