为什么返回带有 HasNavigationBar="false" 的页面时 xct:TabView 的高度会发生变化

Why does the height of the xct:TabView change when returning to a page with HasNavigationBar="false"

我遇到 XamarinCommunityToolkit 中的 TabView 问题。

MainPage 有两个选项卡“A”和“B”,“A”显示一些内容,“B”用作到另一个 ContentPage“DetailsPage”的导航。此外,MainPage 已设置 NavigationPage.HasNavigationBar="false",不应显示任何导航栏。

启动时,导航栏未按预期显示。单击选项卡“B”然后单击“详细信息页面”上的后退按钮时,TabView 似乎会更改其高度并占用额外的 space。

这里基本上是所有的代码:

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:views="http://xamarin.com/schemas/2020/toolkit"
             x:Class="App1.MainPage"
             NavigationPage.HasNavigationBar="false"
             >
    <StackLayout>
        <views:TabView 
            TabStripPlacement="Bottom"
            BackgroundColor="Gold"
            TabStripHeight="60"
            TabStripBackgroundColor="ForestGreen"
            >
            <views:TabViewItem
                Text="A">
                <Grid BackgroundColor="Cyan"/>
            </views:TabViewItem>
            <views:TabViewItem
                Text="B"
                TabTapped="ShowDetailsPage">
            </views:TabViewItem>
        </views:TabView>
    </StackLayout>
</ContentPage>

在代码隐藏文件中 App.xaml.cs 添加了一行以便导航到“DetailsPage”:

MainPage = new NavigationPage(new MainPage());

这是带有不需要的“金条”的结果: Undesired change in height of TabView

我已经尝试过:

非常感谢任何帮助或提示。

EDIT/ADDITION: 正如 Alexander May 所提到的 tabview 布局错误的提示让我们进一步缩小了问题范围。

通过任何导航对象(例如 TabViewItem 内容中的按钮)导航到详细信息页面时也存在此问题。

示例因此可以进一步缩减为一个选项卡:

    <StackLayout>
        <views:TabView 
            TabStripPlacement="Bottom"
            BackgroundColor="Gold"
            TabStripHeight="60"
            TabStripBackgroundColor="ForestGreen"
            >
            <views:TabViewItem
                Text="A">
                <Grid BackgroundColor="Cyan">
                    <Button Clicked="ShowDetailsPage" Text="Click Me" BackgroundColor="LightPink"></Button>
                </Grid>
            </views:TabViewItem>
        </views:TabView>
    </StackLayout>

不受欢迎的“金色条”是由于 tabview 的布局错误,请尝试我的解决方案,效果很好!

下面是xaml中的代码:

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
         xmlns:views="http://xamarin.com/schemas/2020/toolkit"
         NavigationPage.HasNavigationBar="False"
         x:Class="AppNavTab.MainPage"
         >
<Grid>
    <views:TabView
            TabStripPlacement="Bottom"
            TabStripBackgroundColor="Green"
            TabStripHeight="60"
            TabContentBackgroundColor="Cyan">

        <views:TabViewItem
                Text="A"
                TextColor="Black"
                FontSize="12">
            <Grid BackgroundColor="Cyan">
                <Label
                        HorizontalOptions="Center"
                        VerticalOptions="Center"
                        Text="TabContent1" />
            </Grid>
        </views:TabViewItem>

        <views:TabViewItem
                Text="B"
                TextColor="Black"
                FontSize="12"
                TabTapped="TabViewItem_TabTapped">
       
        </views:TabViewItem>
    </views:TabView>
</Grid>

下面是xaml背后的代码:

    public partial class MainPage : ContentPage
    {
        public MainPage()
       {
            InitializeComponent();
       }

        private void TabViewItem_TabTapped(object sender, Xamarin.CommunityToolkit.UI.Views.TabTappedEventArgs e)
        {
            Navigation.PushAsync(new DetailPage());
        }
    }

解决方法 2:

    <Grid RowSpacing="0" ColumnSpacing="0" x:Name="grid" >
    <Grid.RowDefinitions>
        <RowDefinition Height="*"/>
        <RowDefinition Height="60"/>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>


    <StackLayout BackgroundColor="Cyan" Grid.ColumnSpan="2">
        
    </StackLayout>

    <Button Text="item1" Grid.Row="1" Grid.Column="0" Clicked="Button_Clicked1"/>
    <Button Text="item2" Grid.Row="1" Grid.Column="1" Clicked="Button_Clicked2"/>

    </Grid>

社区工具包网站上有一个未解决的错误:https://github.com/xamarin/XamarinCommunityToolkit/issues/625