Shell TitleView 无法填充布局
Shell TitleView cant populate Layouts
我们正在开发 MAUI 应用程序,但在标签页之间导航时遇到了问题。
我们有一个带有 TabBar
的 shell 应用程序,我们在里面定义了 5 个选项卡:
<TabBar>
<Tab Title="Home"
Icon="homeicon.png">
<ShellContent ContentTemplate="{DataTemplate Pages:FeedPage}" />
</Tab>
<Tab Title="Messages"
Icon="messageicon.png">
<ShellContent ContentTemplate="{DataTemplate Pages:MessagesPage}" />
...
</TabBar>
我们还在其中一个选项卡 xaml 中定义了一个 Shell.TitleView,如下所示:
<Shell.TitleView>
<Grid Padding="5" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="5*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<ImageButton Grid.Column="2" Source="profileicon.png"
HorizontalOptions="CenterAndExpand"
VerticalOptions="CenterAndExpand"
Command="{Binding ProfileButtonTapped }" />
<ImageButton Grid.Column="1" Source="coinicon.png"
...
...
</Grid>
</Shell.TitleView>
当我们尝试返回到定义了 Shell.TitleView 的选项卡时,我们的问题就出现了。我们得到的错误是:
Java.Lang.IllegalStateException: 'The specified child already has a parent. You must call removeView() on the child's parent first.'
标题视图上的 StackLayout 也会出现此错误...我们进行了一些挖掘,发现如果我们从 TitleView 中删除布局,错误就不会再发生,所以我们猜测它与某些事情有关有了它。
编辑 1:我每次切换标签时都会注意到这个输出
"Thread finished: #11
The thread 0xb has exited with code 0 (0x0).
Thread started: #12
Thread finished: #10
The thread 0xa has exited with code 0 (0x0).
[TabLayout] MODE_SCROLLABLE + GRAVITY_FILL is not supported, GRAVITY_START will be used instead"
不幸的是,这是 MAUI 本身的一个已知错误当从 Shell 选项卡 #4506 导航回到 Android 时,带有 TitleView 的页面在 Android 上崩溃
我们正在开发 MAUI 应用程序,但在标签页之间导航时遇到了问题。
我们有一个带有 TabBar
的 shell 应用程序,我们在里面定义了 5 个选项卡:
<TabBar>
<Tab Title="Home"
Icon="homeicon.png">
<ShellContent ContentTemplate="{DataTemplate Pages:FeedPage}" />
</Tab>
<Tab Title="Messages"
Icon="messageicon.png">
<ShellContent ContentTemplate="{DataTemplate Pages:MessagesPage}" />
...
</TabBar>
我们还在其中一个选项卡 xaml 中定义了一个 Shell.TitleView,如下所示:
<Shell.TitleView>
<Grid Padding="5" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="5*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<ImageButton Grid.Column="2" Source="profileicon.png"
HorizontalOptions="CenterAndExpand"
VerticalOptions="CenterAndExpand"
Command="{Binding ProfileButtonTapped }" />
<ImageButton Grid.Column="1" Source="coinicon.png"
...
...
</Grid>
</Shell.TitleView>
当我们尝试返回到定义了 Shell.TitleView 的选项卡时,我们的问题就出现了。我们得到的错误是:
Java.Lang.IllegalStateException: 'The specified child already has a parent. You must call removeView() on the child's parent first.'
标题视图上的 StackLayout 也会出现此错误...我们进行了一些挖掘,发现如果我们从 TitleView 中删除布局,错误就不会再发生,所以我们猜测它与某些事情有关有了它。
编辑 1:我每次切换标签时都会注意到这个输出
"Thread finished: #11 The thread 0xb has exited with code 0 (0x0). Thread started: #12 Thread finished: #10 The thread 0xa has exited with code 0 (0x0). [TabLayout] MODE_SCROLLABLE + GRAVITY_FILL is not supported, GRAVITY_START will be used instead"
不幸的是,这是 MAUI 本身的一个已知错误当从 Shell 选项卡 #4506 导航回到 Android 时,带有 TitleView 的页面在 Android 上崩溃