gpt4 book ai didi

java - PushAsync 导航上的 Xamarin Forms 'DrawerLayout must be measured with MeasureSpec.EXACTLY.' 错误

转载 作者:行者123 更新时间:2023-12-01 21:10:21 25 4
gpt4 key购买 nike

在我的应用程序中,我使用 Xamarin Shell 创建底部标签栏导航,如下所示:

MainPage.xaml

<!--TabBar Styles and Resources-->
<Shell.Resources>
<ResourceDictionary>
<Style x:Key="FreeStyle" TargetType="Element">
<Setter Property="Shell.TabBarBackgroundColor" Value="#f7f7f7" />
<Setter Property="Shell.TabBarForegroundColor" Value="White"/>
<Setter Property="Shell.TabBarUnselectedColor" Value="#999999"/>
<Setter Property="Shell.TabBarTitleColor" Value="#61c9f7"/>
</Style>
</ResourceDictionary>
</Shell.Resources>


<!--BluePill Pages-->
<TabBar Style="{StaticResource FreeStyle}">
<!--TeleMED Tab-->
<Tab Icon="telemedicineIcon.png">
<ShellContent ContentTemplate="{DataTemplate views:TelemedicineMainPage}"/>
</Tab>

<!--FlemingTab-->
<Tab Icon="chatbotIcon.png">
<ShellContent ContentTemplate="{DataTemplate views:ChatbotPage}"/>
</Tab>

<!--FirstAid Tab-->
<Tab Icon="firstaidIcon.png">
<ShellContent ContentTemplate="{DataTemplate views:FirstAidPage}"/>
</Tab>

<!--User Profile Tab-->
<Tab Icon="profileIcon.png">
<ShellContent ContentTemplate="{DataTemplate views:UserProfilePage}"/>
</Tab>
</TabBar>

ChatbotPage.xaml 中,我想完全删除标签栏,因此我在其代码后面实现了 Shell.SetTabBarIsVisible(this, false); 并添加了 TapGesture到其中一个标签,以便它带我返回主页。
每当我运行应用程序并点击 ChatbotPage 中的后退按钮时,我都会收到此异常
Java.Lang.IllegalArgumentException:“DrawerLayout 必须使用 MeasureSpec.EXACTLY 进行测量。”
我不知道这意味着什么,想知道是否有任何修复或解决方法?

ChatbotPage.xaml

<!--Chatbot Header and Back Button-->
<Frame BackgroundColor="#f7f7f7" Grid.Row="0" HasShadow="True">
<StackLayout Orientation="Horizontal">
<renderers:FontAwesomeIcon Text="{x:Static helpers:IconsFA.BackArrow}" HorizontalOptions="Start">
<Label.GestureRecognizers>
<TapGestureRecognizer Tapped="BacktoMain_Button"/>
</Label.GestureRecognizers>
</renderers:FontAwesomeIcon>

<StackLayout Orientation="Horizontal" HorizontalOptions="CenterAndExpand">
<Frame BackgroundColor="Gray"
Padding="0"
CornerRadius="100"
HasShadow="False"
IsClippedToBounds="True"
HeightRequest="35"
WidthRequest="35">

<Image HorizontalOptions="Center"
VerticalOptions="Center"/>
</Frame>

<Label Text="Fleming"
TextColor="Black"
FontAttributes="Bold"
FontSize="18"
VerticalOptions="Center"/>
</StackLayout>
</StackLayout>
</Frame>

ChatbotPage.xaml.cs

[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class ChatbotPage : ContentPage
{
public ChatbotPage()
{
InitializeComponent();

Shell.SetTabBarIsVisible(this, false);
}

private async void BacktoMain_Button(object sender, EventArgs e)
{
await Navigation.PushAsync(new MainPage());
}
}

最佳答案

使用 await Navigation.PushAsync(new MainPage()); 不会带您返回到您正在使用的 MainPage,这行代码将推送到新的主页

要在选项卡栏下以编程方式选择不同的选项卡,您可以使用:

private void Button_Clicked(object sender, EventArgs e)
{
TabBar bar = Shell.Current.Items[0] as TabBar;

//Select the first Tab
bar.CurrentItem = bar.Items[0];

//If you want to select the second tab, you can use bar.CurrentItem = bar.Items[1]; the same as the third tab, the fourth tab......
}

我上传了一个示例here .

关于java - PushAsync 导航上的 Xamarin Forms 'DrawerLayout must be measured with MeasureSpec.EXACTLY.' 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58906519/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com