Настройка цветовой схемы TabbedPage - Xamarin.Forms

Есть ли способ настроить цветовую схему вкладок на объекте Xamarin.Forms.TabbedPage, чтобы он не принимал внешний вид целевой платформы по умолчанию?

Я хочу изменить цвет шрифта, фон и цвет текущей выбранной вкладки.


person Michael Kniskern    schedule 31.07.2014    source источник


Ответы (6)


Я предлагаю использовать настраиваемый рендерер.

Вот пример для 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.

person StackFlower    schedule 25.02.2015
comment
Как это сделать на Android? - person Fran_gg7; 08.07.2015

Поздно на вечеринку.

Теперь вы можете изменить цвет фона страницы с вкладками следующим образом.

BarBackgroundColor = Color.Black;

Ссылки ниже могут помочь вам больше

Как изменить цвет индикатора страницы с вкладками в Xamarin .Droid?

http://thatcsharpguy.com/post/platformtabbedpage-xamarin-forms-en/ < / а>

person Avinash Ramireddy    schedule 18.02.2017

В Xamarin.Forms нет встроенного способа, но это действительно легко сделать в ваших проектах, ориентированных на платформу. например с помощью UIAppearance на iOS.

person Stephane Delcroix    schedule 01.08.2014

На странице с вкладками, чтобы изменить цвет заголовка в формах 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
            };
person Yogeshwaran    schedule 29.08.2017

Я могу добиться этого в Android, выполнив следующие действия:

Преобразуйте Current.MainPage в TabbedPage - это позволит вам установить свойства.

((TabbedPage)Current.MainPage).BarBackgroundColor = Color.FromHex(settings.AppSecondaryColour);

введите здесь описание изображения

Вы должны иметь возможность изменить другие свойства таким же образом. Я еще НЕ тестировал это в IOS.

person loan.burger    schedule 14.04.2017

Сделать это можно так:

<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.

person JPBlanc    schedule 29.04.2020