在android上单击FreshTabbedNavigationContainer,弹出到根目录
考虑一个带有“主页”和“配置文件”按钮的选项卡栏,当我单击其中一个,在两个页面之间切换时,在“主页”页面上,用户可以在navigationstack中导航多次,但焦点仍然集中在“主页”选项卡上,指示用户来自何处 现在,在iOS上,每当用户在导航策略中从高处单击“home”时,用户就会弹出到根目录,一切正常,但在android上并非如此。然而,在android上,用户必须通过单击backbutton一次弹出一个页面才能到达根目录 这是预期的行为吗?我在实现[0]时是否做错了什么?是否有人知道我可以做些什么来获得预期的行为在android上单击FreshTabbedNavigationContainer,弹出到根目录,android,xamarin.forms,freshmvvm,Android,Xamarin.forms,Freshmvvm,考虑一个带有“主页”和“配置文件”按钮的选项卡栏,当我单击其中一个,在两个页面之间切换时,在“主页”页面上,用户可以在navigationstack中导航多次,但焦点仍然集中在“主页”选项卡上,指示用户来自何处 现在,在iOS上,每当用户在导航策略中从高处单击“home”时,用户就会弹出到根目录,一切正常,但在android上并非如此。然而,在android上,用户必须通过单击backbutton一次弹出一个页面才能到达根目录 这是预期的行为吗?我在实现[0]时是否做错了什么?是否有人知道我可以
[0]这是iOS和Android之间的预期行为 如果您需要使Android具有与iOS相同的效果,您需要定制来实现这一点。底部选项卡栏效果可以自定义FreshTabbedNavigationContainer。最后,我们将使用将消息发送到表单,以弹出到根页面 例如,CustomFreshTabbedNavigationContainer类:
public class CustomFreshTabbedNavigationContainer : FreshTabbedNavigationContainer
{
public CustomFreshTabbedNavigationContainer()
{
On<Android>().SetToolbarPlacement(ToolbarPlacement.Bottom);
MessagingCenter.Subscribe<object>(this, "Hi", (sender) =>
{
// Do something whenever the "Hi" message is received
PopToRoot(true);
});
}
}
公共类CustomFreshTabbedNavigationContainer:FreshTabbedNavigationContainer
{
公共CustomFreshTabbedNavigationContainer()
{
在
注意:如果需要与Android中的顶部选项卡栏具有相同的效果,则在CustomTabbedPageRenderer
中有不同的代码。您可以查看此代码。这是iOS和Android之间的预期行为
如果您需要使Android具有与iOS相同的效果,则需要自定义以实现该效果。底部的选项卡栏效果可以自定义FreshTabbedNavigationContainer。最后,我们将使用将消息发送到表单,以弹出到根页面
例如,CustomFreshTabbedNavigationContainer类:
public class CustomFreshTabbedNavigationContainer : FreshTabbedNavigationContainer
{
public CustomFreshTabbedNavigationContainer()
{
On<Android>().SetToolbarPlacement(ToolbarPlacement.Bottom);
MessagingCenter.Subscribe<object>(this, "Hi", (sender) =>
{
// Do something whenever the "Hi" message is received
PopToRoot(true);
});
}
}
公共类CustomFreshTabbedNavigationContainer:FreshTabbedNavigationContainer
{
公共CustomFreshTabbedNavigationContainer()
{
在
注意:如果需要与Android中的顶部选项卡栏具有相同的效果,则在CustomTabbedPageRenderer
中有不同的代码。您可以查看此代码
public class CustomTabbedPageRenderer : TabbedPageRenderer, BottomNavigationView.IOnNavigationItemSelectedListener
{
public CustomTabbedPageRenderer(Context context) : base(context)
{
}
int previousItemId = 0;
bool BottomNavigationView.IOnNavigationItemSelectedListener.OnNavigationItemSelected(IMenuItem item)
{
base.OnNavigationItemSelected(item);
if (item.IsChecked)
{
if (previousItemId != item.ItemId)
{
previousItemId = item.ItemId;
}
else
{
Console.WriteLine("ok");
MessagingCenter.Send<object>(this, "Hi");
}
}
return true;
}
}