首页 > 解决方案 > 选项卡式页面未显示,但我收到 0 个错误

问题描述

我正在尝试通过使用 tabbedpage 在 xamarin android 中创建一个底部导航栏,但是一旦我调试应用程序,它实际上并不存在。

xml-前端:

 <TabbedPage.Children >
        <NavigationPage Title="Upload">
            <x:Arguments>
                <views:Upload/>
            </x:Arguments>
        </NavigationPage>
        <NavigationPage Title="Events" >
            <x:Arguments>
                <views:Events/>
            </x:Arguments>
        </NavigationPage>
        <NavigationPage Title="Projects" >
            <x:Arguments>
                <views:Projects/>
            </x:Arguments>
        </NavigationPage>
        <NavigationPage Title="Registration">
            <x:Arguments>
                <views:Registration/>
            </x:Arguments>
        </NavigationPage>
    </TabbedPage.Children>
</TabbedPage>

c# - 后端:

 public partial class TabbedPage : Xamarin.Forms.TabbedPage
    {

        public TabbedPage()
        {
          InitializeComponent();
          On<Xamarin.Forms.PlatformConfiguration.Android>().SetToolbarPlacement(ToolbarPlacement.Bottom);
        }
    }

标签: c#androidxamlxamarintabbedpage

解决方案


我在我这边测试,当Tabs超过3时会发生,这是Android的默认行为。您的标签仍然存在 - 点击它们应该在的位置,您会看到标签发生变化。如果添加图标(设置 IconImageSource 属性),即使文本为空白,图标也会显示。这里给你一个解决方法。

您可以首先使用Naxam.BottomTabbedPage作为解决方法

下载Naxam.BottomTabbedPage nuget。

然后让你的页面扩展BottomTabbedPage

[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class MyTabbedPage: BottomTabbedPage
{
    public TabbedPage1()
    {
        InitializeComponent();           
    }
}

在 MyTabbedPage.xaml 添加xmlns:naxam="clrnamespace:Naxam.Controls.Forms;assembly=Naxam.Controls.Forms"

<?xml version="1.0" encoding="utf-8" ?>
<naxam:BottomTabbedPage 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"
         xmlns:views="clr-namespace:TabbedPageDemo.Views"
         xmlns:naxam="clr-namespace:Naxam.Controls.Forms;assembly=Naxam.Controls.Forms"
         x:Class="TabbedPageDemo.Views.MyTabbedPage">
    <NavigationPage Title="Upload">
        <x:Arguments>
            <views:Upload/>
        </x:Arguments>
    </NavigationPage>
    <NavigationPage Title="Events" >
        <x:Arguments>
            <views:Events/>
        </x:Arguments>
    </NavigationPage>
    <NavigationPage Title="Projects" >
        <x:Arguments>
            <views:Projects/>
        </x:Arguments>
    </NavigationPage>
    <NavigationPage Title="Registration">
        <x:Arguments>
            <views:Registration/>
        </x:Arguments>
    </NavigationPage>
</naxam:BottomTabbedPage>

还有另一种解决方法,您只需要编写一个简单的效果 ( NoShiftEffect ) 即可应用于我们的 Xamarin.Forms TabbedPage。


推荐阅读