所以我创建了一个导航栏,我想在其中为Android上的用户缩小标题字体。
我认为我可以这样做:
<ContentPage.Title>
<OnPlatform x:TypeArguments="Size">
<On Platform="Android">8</On>
</OnPlatform>
</ContentPage.Title>
但它不起作用,我收到编译器错误。
因此,我如何更正我的代码,或者最好在App.xaml中编写一些可重用的代码,以便为我的导航标题声明特定于平台的字体大小。
答案 0 :(得分:0)
您需要使用自定义渲染器来设置字体大小
例如:
在pcl项目中创建一个MyNavigationPage.cs
:
public class MyNavigationPage : NavigationPage
{
public MyNavigationPage(Page root) : base(root)
{
}
}
在android项目中创建渲染器类:
[assembly: ExportRenderer(typeof(MyNavigationPage), typeof(CustomNavigationPageRenderer))]
namespace NavigationBarFontSize.Droid
{
public class CustomNavigationPageRenderer : NavigationPageRenderer
{
public CustomNavigationPageRenderer(Context context) : base(context)
{
}
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 = child as Android.Support.V7.Widget.Toolbar;
toolbar.ChildViewAdded += Toolbar_ChildViewAdded;
var a = toolbar.ChildCount;
}
}
void Toolbar_ChildViewAdded(object sender, ChildViewAddedEventArgs e)
{
var view = e.Child.GetType();
if (e.Child.GetType() == typeof(Android.Support.V7.Widget.AppCompatTextView))
{
var textView = e.Child as Android.Support.V7.Widget.AppCompatTextView;
textView.TextSize = 50;
toolbar.ChildViewAdded -= Toolbar_ChildViewAdded;
}
}
}
}
最后,您可以通过以下方式使用它:
public App ()
{
InitializeComponent();
MainPage = new MyNavigationPage(new MainPage());
}