#xml #xaml #xamarin #xamarin.forms #xamarin.android
#xml #xaml #xamarin #xamarin.forms #xamarin.android
Вопрос:
Я использую этот код в NavigationBar.xaml для моей страницы с вкладками
<TabbedPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:android="clr-namespace:Xamarin.Forms.PlatformConfiguration.AndroidSpecific;assembly=Xamarin.Forms.Core"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:xyz"
x:Class="xyz.NavigationBar"
android:TabbedPage.ToolbarPlacement="Bottom"
BarBackgroundColor="#000000"
android:TabbedPage.BarItemColor="#FFFFFF"
android:TabbedPage.BarSelectedItemColor="Red"
>
</TabbedPage>
Панель инструментов находится внизу.
Я смог изменить размер текста благодаря статье Джеймса Монтеманьо:
https://montemagno.com/control-text-size-on-android-bottom-navigation/
В котором он заявляет, что размер текста можно изменить, добавив dimen.xml файл в Resources/ values со следующим кодом:
<resources xmlns:tools="http://schemas.android.com/tools">
<dimen name="design_bottom_navigation_text_size" tools:override="true">12sp</dimen>
<dimen name="design_bottom_navigation_active_text_size" tools:override="true">12sp</dimen>
</resources>
Это работает нормально.
Однако возможно ли изменить семейство шрифтов тем же методом? Я тоже использую пользовательский шрифт.
Заранее спасибо
Комментарии:
1. Кто-нибудь знает, как это сделать?
Ответ №1:
Создайте новую font
папку и добавьте в .tff
нее файл и новый XML-файл с именем myfont.
в myfont.xml
:
<?xml version="1.0" encoding="utf-8" ?>
<font-family xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<font android:font="@font/a"
android:fontStyle="normal"
android:fontWeight="400"
/>
</font-family>
затем в ваш Resources/values/styles
файл добавьте пользовательский стиль bottomnavigationview.
<style name="MyBottomNavigationView"
parent="Widget.Design.BottomNavigationView">
<item name="fontFamily">@font/myfont</item>
</style>
наконец, в вашем пользовательском средстве визуализации tabbedpage:
[assembly: ExportRenderer(typeof(TabbedPage), typeof(MyTabbedPageRenderer))]
namespace EntryCa.Droid
{
class MyTabbedPageRenderer:TabbedPageRenderer
{
private Context _context;
public MyTabbedPageRenderer(Context context):base(context)
{
_context = context;
}
protected override void OnElementChanged(ElementChangedEventArgs<TabbedPage> e)
{
base.OnElementChanged(e);
if (e.OldElement == null amp;amp; e.NewElement != null)
{
for (int i = 0; i <= this.ViewGroup.ChildCount - 1; i )
{
var childView = this.ViewGroup.GetChildAt(i);
if (childView is ViewGroup viewGroup)
{
for (int j = 0; j <= viewGroup.ChildCount - 1; j )
{
var childRelativeLayoutView = viewGroup.GetChildAt(j);
if (childRelativeLayoutView is BottomNavigationView)
{
((BottomNavigationView)childRelativeLayoutView).ItemTextAppearanceActive = Resource.Style.MyBottomNavigationView;
((BottomNavigationView)childRelativeLayoutView).ItemTextAppearanceInactive = Resource.Style.MyBottomNavigationView;
}
}
}
}
}
}
}
}