gpt4 book ai didi

android - 如何使用 Xamarin 表单为 Android 创建底部工具栏

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:01:15 24 4
gpt4 key购买 nike

我一直致力于两个 Xamarin 表单项目,这两个项目都需要跨 iOS 和 Android 的底部工具栏。我一直在努力使用 Xamarin 表单将 Android 的底部工具栏放在一起。我试图为 Android 编写自定义 TabbedRenderer,但似乎找不到正确的方法来覆盖以将选项卡推到底部。我还尝试在每个页面底部为选项卡使用 StackLayout,但结果看起来不太好 - 切换选项卡时,选项卡会闪烁,因为它们作为页面的一部分加载。

是否有更好的解决方案来使用 Xamarin 表单编写底部工具栏,或者在不久的将来是否有 Xamarin 表单随附的“ native ”底部工具栏,因为 Google 现在正式接受底部导航并更新了 Material Design 规范。 ?

谢谢!

using System;
using Xamarin.Forms.Platform.Android;
using Android.App;
using Xamarin.Forms;

[assembly: ExportRenderer(typeof(TabbedPage), typeof(ylbCross.Droid.CustomTabRenderer))]

namespace MyApp.Droid
{
public class CustomTabRenderer : TabbedRenderer
{
private Activity _activity;

protected override void OnElementChanged (ElementChangedEventArgs<TabbedPage> e)
{

base.OnElementChanged (e);

_activity = this.Context as Activity;


}

public override void OnWindowFocusChanged(bool hasWindowFocus)
{
ActionBar actionBar = _activity.ActionBar;

if (actionBar.TabCount > 0)
{
ActionBar.Tab tabOne = actionBar.GetTabAt(0);
tabOne.SetIcon (Resource.Drawable.home_Blue48);

tabOne.TabSelected += (sender, e) => {
tabOne.SetIcon (Resource.Drawable.home_Blue);
};
tabOne.TabUnselected += (sender, e) => {
tabOne.SetIcon (Resource.Drawable.home_Grey);
};

ActionBar.Tab tabTwo = actionBar.GetTabAt(1);
tabTwo.SetIcon (Resource.Drawable.QA_Grey);
tabTwo.TabSelected += (sender, e) => {
tabTwo.SetIcon (Resource.Drawable.QA_Blue);
};
tabTwo.TabUnselected += (sender, e) => {
tabTwo.SetIcon (Resource.Drawable.QA_Grey);
};

ActionBar.Tab tabThree = actionBar.GetTabAt(2);
tabThree.SetIcon(Resource.Drawable.consulting_Grey);
tabThree.TabSelected += (sender, e) => {
tabThree.SetIcon (Resource.Drawable.consulting_Blue);
};
tabThree.TabUnselected += (sender, e) => {
tabThree.SetIcon (Resource.Drawable.consulting_Grey);
}

ActionBar.Tab tabFour = actionBar.GetTabAt(3);
tabFour.SetIcon(Resource.Drawable.aboutMe_Grey);
tabFour.TabSelected += (sender, e) => {
tabFour.SetIcon (Resource.Drawable.aboutMe_Blue);
};
tabFour.TabUnselected += (sender, e) => {
tabFour.SetIcon (Resource.Drawable.aboutMe_Grey);
}

}

base.OnWindowFocusChanged(hasWindowFocus);
}
}
}

最佳答案

我认为这个问题是重复的。您可以在这里找到解决方案:

Duplicated question answer (XF Bottom navigation bar)

总之,您应该使用第三方控件,或者如果您是一名优秀的设计师,您可以轻松创建自己的底栏。

此答案中建议的组件,使用 Material Design 用于 Android 平台。如果此答案适合您,请不要忘记标记为已回答。

关于android - 如何使用 Xamarin 表单为 Android 创建底部工具栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36553801/

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