Как настроить размер панели в TabbedPage?[XAMARIN.FORMS] - PullRequest
0 голосов
/ 06 февраля 2019

У меня есть страница с вкладками, она уже размещена, но я чувствую, что она очень маленькая, и мне нужно, чтобы нижняя полоса была выше

<?xml version="1.0" encoding="utf-8" ?>
<TabbedPage xmlns="http://xamarin.com/schemas/2014/forms"
            xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
            x:Class="Mobile.View.Principal"
            xmlns:local="clr-namespace:Mobile.View"
            xmlns:android="clr-namespace:Xamarin.Forms.PlatformConfiguration.AndroidSpecific;assembly=Xamarin.Forms.Core"
            BackgroundColor="White"
            BarTextColor="{StaticResource Gris}"
            BarBackgroundColor="white">


    <local:Inicio Title="Inicio" Icon="home_icon.png" HeightRequest="30" WidthRequest="30"/>
    <local:Consultas Title="Consultas" Icon="search_icon.png"/>
    <local:Utilidades Title="Utilidades" Icon="settings_icon.png"/>
    <local:Perfil Title="Perfil" Icon="favorites_icon.png"/>

</TabbedPage>

, и вот код:

public partial class Principal : Xamarin.Forms.TabbedPage
{
    public Principal()
    {
        InitializeComponent();
        On<Xamarin.Forms.PlatformConfiguration.Android>().SetToolbarPlacement(ToolbarPlacement.Bottom);
        On<Xamarin.Forms.PlatformConfiguration.Android>().SetBarSelectedItemColor(Color.Black);
        On<Xamarin.Forms.PlatformConfiguration.Android>().SetBarItemColor(Color.LightGray);
        //On<Xamarin.Forms.PlatformConfiguration.Android>().DisableSwipePaging(); //Disable sliding the pages with your finger.
        NavigationPage.SetHasNavigationBar(this, false);  // Hide nav bar
    }

    async void OnPerfilAsync(object sender, EventArgs e)
    {
        await Navigation.PushAsync(new Perfil());
    }
}

и вот как выглядит приложение:

enter image description here

КАК ИМЯ ИМЯ СОБСТВЕННОСТИ ВЫСОТЫ БАРА?

Мне нужна помощь !!!

1 Ответ

0 голосов
/ 07 февраля 2019

На какой платформе вы хотите это изменить?Скорее всего, вам потребуется реализовать пользовательский рендерер для каждой платформы, для которой вы хотите внести это изменение.

Для iOS вы можете добавить новый файл общего класса в проект iOS с именем MyTabbedPageRenderer.Затем в файле добавьте эту строку над объявлением namespace:

[assembly: Xamarin.Forms.ExportRenderer(typeof(Xamarin.Forms.TabbedPage), typeof(YourNamespace.MyTabbedPageRenderer))]

, где YourNamespace - это пространство имен, в котором находится MyTabbedPageRenderer, то есть пространство имен чуть ниже того места, где у вас есть этот атрибут

Теперь сделайте класс наследуемым от Xamarin.Forms.Platform.iOS.TabbedRenderer, например:

public class MyTabbedPageRenderer : Xamarin.Forms.Platform.iOS.TabbedRenderer

Затем добавьте следующий метод переопределения к классу:

public override void ViewWillLayoutSubviews()
    {
        base.ViewWillLayoutSubviews();
        var newHeight = TabBar.Frame.Height + 50;
        CoreGraphics.CGRect tabFrame = TabBar.Frame; //self.TabBar is IBOutlet of your TabBar
        tabFrame.Height = newHeight;
        tabFrame.Y = View.Frame.Size.Height - newHeight;
        TabBar.Frame = tabFrame;
    }

Приведенное выше увеличит панель вкладоквысота на iOS на 50 пикселей от стандартной.Измените 50 на любое значение, которое вам нравится.

А для Android вам на самом деле не нужно создавать пользовательский рендер, так как есть макет Android, в котором вы можете установить minHeight для TabLayout.Для этого откройте файл Tabbar.axml в папке resources / layout в вашем проекте Android.Затем добавьте атрибут android:minHeight к элементу android.support.design.widget.TabLayout:

<android.support.design.widget.TabLayout 
    ...
    android:minHeight="300dp"
    />

Это установит высоту в фиксированные 300 пикселей.Установите все, что вы хотите.

Вы также можете установить высоту в методе MainActivity.OnCreate.Ниже начинается с шаблона Xam.Forms TabbedPage проекта.Поставьте следующее после LoadApplication(new App()) call:

Android.Support.Design.Widget.TabLayout tabBar = FindViewById<Android.Support.Design.Widget.TabLayout>(Resource.Id.sliding_tabs);
tabBar.SetMinimumHeight(300);

Измените Resource.Id на android:id для TabLayout в файле Tabbar.axml

...