3

有没有办法可以自定义Xamarin.Forms.TabbedPage对象上选项卡的颜色模式,使其不采用目标平台的默认外观?

我想更改字体颜色、背景和当前选择的标签颜色。

4

6 回答 6

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 版本不同。

于 2015-02-25T10:17:32.003 回答
3

聚会迟到了。

现在您可以按如下方式更改标签页背景颜色

BarBackgroundColor = 颜色.黑色;

以下链接可能对您有更多帮助

如何更改 Xamarin.Droid 中选项卡式页面指示器的颜色?

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

于 2017-02-18T14:06:51.197 回答
1

中没有内置方法Xamarin.Forms,但在特定于平台的项目中很容易做到这一点。例如,通过在iOS.

于 2014-08-01T07:34:01.300 回答
1

在标签页中,为了更改不在 android 本机中的 xamarin 表单中的标题颜色。

标签页代码:

 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,       



            };

资产视图代码:

 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


            };

服务查看代码:

  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
            };
于 2017-08-29T10:39:45.987 回答
0

你可以这样做:

<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

于 2020-04-29T19:33:07.840 回答
0

我可以通过执行以下操作在 Android 中实现这一点:

将 Current.MainPage 转换为 TabbedPage - 这将允许您设置属性。

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

在此处输入图像描述

您应该能够以相同的方式更改您希望的其他属性。我还没有在 IOS 中测试过这个。

于 2017-04-14T01:05:09.133 回答