Bri*_*Lee 4 tabs xamarin.android xamarin.forms
我正在使用Xamarin.forms制作应用程序.
你们都知道Xamarin.forms的常规选项卡,TabbedPage位于顶部.因为它应该存在,如果它是尊重Android UX的原生Android应用程序.
但现在情况发生了变化.甚至谷歌也宣布了新的底部标签栏,称为"底部导航". https://github.com/roughike/BottomBar 许多主要应用都在使用底部标签栏.
但我无法使用新的底部导航.因为我的应用程序基于Xamarin.forms并使用表格中的TabbedPage.如果我尝试使用底部导航,那将会更复杂.
(我也是从表格制作iOS应用程序)
所以最好的方法是将原生标签移到底部.
所以我找到了这个.(也许是旧的) http://envyandroid.com/align-tabhost-at-bottom/
但不知道如何在Xamarin.Android中使用.你可以帮帮我吗?
小智 11
曾经遇到同样的问题,试图从GitHub上的代码创建一个自定义的TabbedPageRenderer但由于几个类和接口作为内部范围而没有运气.找到了一个解决方案,一个hacky虽然,但似乎在我们的情况下工作正常.
只需创建一个继承自TabbedPage的新BottomTabbedPage,以便您可以链接Android的新渲染器,然后创建一个新的渲染器,如下所示:
[assembly: ExportRenderer(typeof(BottomTabbedPage), typeof(BottomTabbedPageRenderer))]
namespace My.XForms.Droid.Renderers
{
public class BottomTabbedPageRenderer : TabbedPageRenderer
{
protected override void OnLayout(bool changed, int l, int t, int r, int b)
{
InvertLayoutThroughScale();
base.OnLayout(changed, l, t, r, b);
}
private void InvertLayoutThroughScale()
{
ViewGroup.ScaleY = -1;
TabLayout tabLayout = null;
ViewPager viewPager = null;
for (int i = 0; i < ChildCount; ++i)
{
Android.Views.View view = (Android.Views.View)GetChildAt(i);
if (view is TabLayout) tabLayout = (TabLayout)view;
else if (view is ViewPager) viewPager = (ViewPager)view;
}
tabLayout.ScaleY = viewPager.ScaleY = -1;
viewPager.SetPadding(0, -tabLayout.MeasuredHeight, 0, 0);
}
}
}
Run Code Online (Sandbox Code Playgroud)
只是缩放页面布局,然后再次缩放子项不会成功,因为原始TabbedPageRenderer填充ViewPager不与TabLayout重叠,因此您包含的页面将出现一个起始间隙,因此插入负填充修复它.
不是一个理想的解决方案,只是工作,但至少你没有运行完整的TabbedPage实现.
| 归档时间: |
|
| 查看次数: |
10885 次 |
| 最近记录: |