gpt4 book ai didi

xamarin.forms - Xamarin 表单 : How to make tabs on bottom of the page?

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

我正在寻找位于页面底部的选项卡。我试过 xamarin forms TabbedPage , 但对于 ios 只有标签位于底部和 安卓和windows 选项卡显示在顶部。有什么办法可以实现这个功能吗?

最佳答案

编辑 :对于新的 Xamarin.Forms 项目,您应该使用 Xamarin.Forms Shell ,它提供了简单的选项卡和其他强大的功能。
要做到这一点,您有 3 个选择:
1) 若要使用新的底部标签栏 native 控件,您必须拥有 Xamarin Forms 3.1 或更高版本。
在您的标签页上,您需要为底部放置添加 android 规范:
XAML

<?xml version="1.0" encoding="utf-8"?>
<TabbedPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:android="clr-namespace:Xamarin.Forms.PlatformConfiguration.AndroidSpecific;assembly=Xamarin.Forms.Core"
android:TabbedPage.ToolbarPlacement="Bottom"
x:Class="YouProjectNameSpace.MyTabbedPage">
</TabbedPage>
或者后面的c#代码
using System;
using Xamarin.Forms.PlatformConfiguration;
using Xamarin.Forms.PlatformConfiguration.AndroidSpecific;
using Xamarin.Forms;

namespace YouProjectNameSpace
{
public partial class MyTabbedPage : TabbedPage
{
public MyTabbedPage()
{
InitializeComponent();
On<Android>().SetToolbarPlacement(ToolbarPlacement.Bottom);
}
}
}
如果您想要更多自定义,您可以添加:
<?xml version="1.0" encoding="utf-8"?>
<TabbedPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:android="clr-namespace:Xamarin.Forms.PlatformConfiguration.AndroidSpecific;assembly=Xamarin.Forms.Core"
android:TabbedPage.ToolbarPlacement="Bottom"
BarBackgroundColor="#2196F3"
BarTextColor="White"
android:TabbedPage.BarItemColor="#66FFFFFF"
android:TabbedPage.BarSelectedItemColor="White"
x:Class="YouProjectNameSpace.MyTabbedPage">
</TabbedPage>
2) 为标签页的Android创建一个自定义渲染器并将其移动到底部
using System;
using Xamarin.Forms;

namespace YouProjectNameSpace
{
public class CustomTabbedPage : TabbedPage
{
}
}
和渲染器:
using System;
using Android.Content;
using Android.Support.Design.Widget;
using Android.Support.V4.View;
using Xamarin.Forms;
using Xamarin.Forms.Platform.Android.AppCompat;

[assembly: ExportRenderer(typeof(CustomTabbedPage), typeof(CustomTabbedPageRenderer))]
namespace YouProjectNameSpace.Android
{
public class CustomTabbedPageRenderer : TabbedPageRenderer
{
public CustomTabbedPageRenderer(Context context): base(context)
{
}

protected override void OnLayout(bool changed, int l, int t, int r, int b)
{
this.InvertLayoutThroughScale();

base.OnLayout(changed, l, t, r, b);
}

private void InvertLayoutThroughScale()
{
this.ViewGroup.ScaleY = -1;

TabLayout tabLayout = null;
ViewPager viewPager = null;

for (int i = 0; i < ChildCount; ++i)
{
Android.Views.View view = GetChildAt(i);
if (view is TabLayout tabs)
tabLayout = tabs;
else if (view is ViewPager pager)
viewPager = pager;
}

tabLayout.ViewTreeObserver.AddOnGlobalLayoutListener(new GlobalLayoutListener(viewPager, tabLayout));

tabLayout.ScaleY = viewPager.ScaleY = -1;
}

private class GlobalLayoutListener : Java.Lang.Object, Android.Views.ViewTreeObserver.IOnGlobalLayoutListener
{
private readonly ViewPager viewPager;
private readonly TabLayout tabLayout;

public GlobalLayoutListener(ViewPager viewPager, TabLayout tabLayout)
{
this.viewPager = viewPager;
this.tabLayout = tabLayout;
}

public void OnGlobalLayout()
{
this.viewPager.SetPadding(0, -this.tabLayout.MeasuredHeight, 0, 0);
this.tabLayout.ViewTreeObserver.RemoveOnGlobalLayoutListener(this);
}
}
}
}
3) 使用特定的库,如 PXTabs ,这将创建一个完整的 Xamarin Forms 底部选项卡,无需任何 native 代码。
如果您想阅读有关底部选项卡和渲染器的更多信息:
Setting TabbedPage Toolbar Placement and Color
Xamarin.Forms: Official Bottom Navigation/Bottom Tabs on Android
BottomNavigationBarXF

关于xamarin.forms - Xamarin 表单 : How to make tabs on bottom of the page?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53021385/

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