Основываясь на моих исследованиях, это не может быть достигнуто в нативных формах, мы должны добиться этого с помощью специального средства визуализации для оболочки Здесь запущен GIF (если вы хотите это сделать, вам нужно добавить представление admob в xamarin. android).
Вы должны создать пользовательский рендерер, подобный следующему коду в оболочке.
[assembly: ExportRenderer(typeof(AppShell), typeof(MyShellRenderer))]
namespace XFormsAdsWithShell.Droid
{
public class MyShellRenderer : ShellRenderer
{
public MyShellRenderer(Context context) : base(context)
{
}
protected override IShellItemRenderer CreateShellItemRenderer(ShellItem shellItem)
{
return new ShellItemRenderer(this);
}
}
}
ShellItemRenderer.cs
internal class ShellItemRenderer : Xamarin.Forms.Platform.Android.ShellItemRenderer
{
public ShellItemRenderer(IShellContext shellContext) : base(shellContext)
{
}
BottomNavigationView _bottomView;
FrameLayout _navigationArea;
public override Android.Views.View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
Android.Views.View _outerLayout = base.OnCreateView(inflater, container, savedInstanceState);
_bottomView = _outerLayout.FindViewById<BottomNavigationView>(Resource.Id.bottomtab_tabbar);
_bottomView.SetMinimumHeight(220);
_navigationArea = _outerLayout.FindViewById<FrameLayout>(Resource.Id.bottomtab_navarea);
return _outerLayout;
}
}
Важное место - создать BottomTabLayout.xml
(пожалуйста, не изменяйте другое имя), добавьте следующее код компоновки.
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:id="@+id/bottomtab.navarea"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_gravity="bottom"
android:layout_weight="1" />
<android.support.design.widget.BottomNavigationView
android:id="@+id/bottomtab.tabbar"
android:theme="@style/Widget.Design.BottomNavigationView"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
<FrameLayout
android:id="@+id/bottomtab.tabbar.container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal|bottom" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="20dp"
android:background="@android:color/holo_red_dark">
<!--add your google AD here-->
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="AD Area"
/>
</LinearLayout >
</FrameLayout>
</FrameLayout>
У меня есть другой способ добиться этого, как показано ниже:
С помощью следующего кода.
<TabBar>
<Tab Title="Browse" Icon="tab_feed.png">
<ShellContent Title="item" ContentTemplate="{DataTemplate local:ItemsPage}" />
<ShellContent Title="page1" ContentTemplate="{DataTemplate local:Page1}" />
</Tab>
</TabBar>
Я надеюсь, что другие могут дать лучшее решение.