Xamarin Forms:如何更改Android导航标题字体系列



我正在使用AppShell和Flyout进行Xamarin Forms项目。我想更改导航标题的字体系列。我试着想办法做到这一点,但不幸的是,我无法解决这个问题。我在在线解决方案中的一个尝试是使用下面的代码使用自定义渲染。它警告我NavigationPageRenderer已经过时,当我运行它时,我会得到一个异常。请帮助我找到更改导航标题字体系列的方法。

自定义渲染:

[assembly: ExportRenderer(typeof(AppShell), typeof(CustomNavigationPageRenderer))]
namespace MyApp.Droid.CustomRenderers
{
public class CustomNavigationPageRenderer : NavigationPageRenderer
{
private Android.Support.V7.Widget.Toolbar _toolbar;
public override void OnViewAdded(Android.Views.View child)
{
base.OnViewAdded(child);
if (child.GetType() == typeof(Android.Support.V7.Widget.Toolbar))
{
_toolbar = (Android.Support.V7.Widget.Toolbar)child;
_toolbar.ChildViewAdded += Toolbar_ChildViewAdded;
}
}
protected override void Dispose(bool disposing)
{
base.Dispose(disposing);
if (disposing)
{
_toolbar.ChildViewAdded -= Toolbar_ChildViewAdded;
}
}
private void Toolbar_ChildViewAdded(object sender, ChildViewAddedEventArgs e)
{
var view = e.Child.GetType();
if (e.Child.GetType() == typeof(Android.Widget.TextView))
{
var textView = (Android.Widget.TextView)e.Child;
var spaceFont = Typeface.CreateFromAsset(Forms.Context.ApplicationContext.Assets, "Montserrat-SemiBold.ttf");
textView.Typeface = spaceFont;
_toolbar.ChildViewAdded -= Toolbar_ChildViewAdded;
}
}
}
}

警告:

'NavigationPageRenderer.NavigationPageRenderer()' is obsolete: 'This constructor is obsolete as of version 2.5. Please use NavigationPageRenderer(Context) instead.

抛出异常:(位于"MainActivity"类中的"LoadApplication(new App(("(

System.ArgumentException: 'element is not of type Xamarin.Forms.NavigationPage
Parameter name: element'

你能试试这个吗。在要更改标题字体的页面中,添加自定义字体后,将其添加到xaml中。将字体族更改为所需的字体。

<NavigationPage.TitleView>
<StackLayout>
<Label FontFamily=""/>
</StackLayout>
</NavigationPage.TitleView>

最新更新