Xamarin.forms Xamarin表单在详细信息页面中隐藏选项卡页面,但保留后退按钮
我有一个xamarin表单选项卡页面,第一页有一个列表视图。单击listview时,我希望能够隐藏选项卡(因为listview项目会将用户带到显示该项目详细信息的页面。这就是我只希望用户能够按“上一步”按钮返回选项卡页面的原因)。。。我如何做到这一点 到目前为止,我最接近它的是重新分配App.Current.MainPageXamarin.forms Xamarin表单在详细信息页面中隐藏选项卡页面,但保留后退按钮,xamarin.forms,Xamarin.forms,我有一个xamarin表单选项卡页面,第一页有一个列表视图。单击listview时,我希望能够隐藏选项卡(因为listview项目会将用户带到显示该项目详细信息的页面。这就是我只希望用户能够按“上一步”按钮返回选项卡页面的原因)。。。我如何做到这一点 到目前为止,我最接近它的是重新分配App.Current.MainPage ListView_ItemSelected(object sender, SelectedItemChangedEventArgs e) { App.Current.Ma
ListView_ItemSelected(object sender, SelectedItemChangedEventArgs e)
{
App.Current.MainPage= new NavigationPage(new MyNewPage());
}
但是,我丢失了“后退”按钮…如何创建“详细信息”页面、隐藏“详细信息”页面中的选项卡以及不丢失“后退”按钮?(在大多数流行的android应用程序中,这似乎非常普遍)
最好的例子来描述我正在尝试做什么是在三角洲的“飞三角洲”android应用程序。。在主屏幕上,有一个选项卡页面。当我单击“最近的活动”时,我会被发送到一个没有选项卡的详细信息页面,但详细信息页面有一个后退按钮。当我单击“后退”按钮时,它会将我送回选项卡页面
您必须为您的
选项卡页面创建一个自定义渲染器,类似于:
public class CustomTabbedPage : TabbedPage
{
public static readonly BindableProperty TabBarHiddenProperty =
BindableProperty.Create("TabBarHidden", typeof(bool), typeof(CustomTabbedPage), false);
public bool TabBarHidden
{
get { return (bool)GetValue(TabBarHiddenProperty); }
set { SetValue(TabBarHiddenProperty, value); }
}
}
using System;
using yourAppName;
using yourAppName.iOS;
using Xamarin.Forms;
using Xamarin.Forms.Platform.iOS;
[assembly:ExportRenderer(typeof(CustomTabbedPage), typeof(CustomTabbedPageRenderer))]
namespace yourAppName.iOS
{
public class CustomTabbedPageRenderer : TabbedRenderer
{
protected override void OnElementChanged(VisualElementChangedEventArgs e)
{
base.OnElementChanged(e);
this.Tabbed.PropertyChanging += (sender, eventArgs) => {
if (eventArgs.PropertyName == "TabBarHidden" && TabBar.SelectedItem == TabBar.Items[3])
{
bool tabBarHidden = !tmp.TabBarHidden;
TabBar.Hidden = tabBarHidden;
Console.WriteLine(View.Frame.Width + " " + View.Frame.Height);
// The solution to the space left behind the invisible tab bar
if(TabBar.Hidden)
View.Subviews[1].Frame = new CoreGraphics.CGRect(View.Subviews[1].Frame.X, View.Subviews[1].Frame.Y, View.Subviews[1].Frame.Width, 0);
else
View.Subviews[1].Frame = new CoreGraphics.CGRect(View.Subviews[1].Frame.X, View.Subviews[1].Frame.Y, View.Subviews[1].Frame.Width, 49);
}
};
}
}
}
对于Android,我使用以下命令:不要切换主页。使主页成为导航页面,并在主页内添加选项卡式页面