К сожалению, в Xamarin.Forms нет прямого кроссплатформенного способа достижения этого. В вашем случае это будет TabbedPageRenderer
. Как только вы сможете зарегистрировать свой пользовательский рендерер на платформе, вы сможете получить доступ к собственным представлениям на платформе и использовать API-интерфейсы c, заданные для платформы, и установить собственные свойства по желанию.
Обновить :
Чтобы помочь вам достичь того, что я сказал выше, вот код для Android. Вы бы сделали что-то подобное с iOS
[assembly: ExportRenderer(typeof(TabbedPage), typeof(CustomTabbedPageRenderer))]
namespace YourNamespace.Renderers
{
public class CustomTabbedPageRenderer : TabbedPageRenderer
{
public CustomTabbedPageRenderer(Context context) : base(context)
{
}
protected override void OnElementChanged(ElementChangedEventArgs<TabbedPage> e)
{
base.OnElementChanged(e);
if (Element == null)
{
return;
}
UpdateTabLayout();
}
private void UpdateTabLayout()
{
if (!(GetChildAt(1) is TabLayout tabLayout)) return;
var vg = (ViewGroup) tabLayout.GetChildAt(0);
var tabsCount = vg.ChildCount;
for (var i = 0; i < tabsCount; i++)
{
var vgTab = (ViewGroup) vg.GetChildAt(i);
var tabChildCount = vgTab.ChildCount;
for (var j = 0; j < tabChildCount; j++)
{
var tabViewChild = vgTab.GetChildAt(j);
if (tabViewChild is TextView textView)
{
textView.SetTypeface(Typeface.SansSerif, TypefaceStyle.Italic);
}
}
}
}
}
}
В приведенном выше коде пытается установить шрифт SansSerif
со стилем Italic
, и я протестировал код, он работает, как ожидалось.