我在Xamarin表单中有以下代码:
<TabbedPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:XXX;assembly=XXX"
xmlns:android="clr-namespace:Xamarin.Forms.PlatformConfiguration.AndroidSpecific;assembly=Xamarin.Forms.Core"
BackgroundColor="{DynamicResource BarBackgroundColor}"
android:TabbedPage.ToolbarPlacement="Bottom"
android:TabbedPage.BarItemColor="Gray"
android:TabbedPage.BarSelectedItemColor="{DynamicResource BarSelectedItemColor}"
android:TabbedPage.IsSwipePagingEnabled="False"
x:Class="XXX.MainPage">
</TabbedPage>
我想在Android
边更改Tabbar文本的大小。我尝试过创建自己的样式,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="MyTabLayoutStyle" parent="TextAppearance.Design.Tab">
<item name="android:textSize">5sp</item>
</style>
</resources>
在我的Tabbar.axml
中:
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.TabLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/tabs"
android:layout_width="match_parent"
app:tabGravity="fill"
app:tabMode="fixed"
app:tabTextAppearance="@style/MyTabLayoutStyle"/>
我感觉这是行不通的,因为我正在使用TabbedPage.ToolbarPlacement="Bottom"
,而不是TabLayout
,现在我正在使用BottomNavigationView
。因此,上面的问题是,在使用TabbedPage.ToolbarPlacement="Bottom"
时如何更改标签栏的文本大小。
答案 0 :(得分:1)
过去,如果您不使用,
xmlns:android="clr-namespace:Xamarin.Forms.PlatformConfiguration.AndroidSpecific;assembly=Xamarin.Forms.Core"
android:TabbedPage.BarItemColor="#999999"
android:TabbedPage.BarSelectedItemColor="Black"
android:TabbedPage.ToolbarPlacement="Bottom"
您可以看一下以下线程来更改TabbedPage栏的文本大小。但是,如果您使用TabbedPage.ToolbarPlacement =“ Bottom”,则无法使用。因此,您需要看一下TabbedPage源代码。 Xamarin.Forms: Change Icon & Text size in TabbedPage tabs
从GitHub的TabbedPage源代码中,我们可以看到有放置Tab的位置,一个是Bottom,另一个不是,您想将Tab放在底部,因此可以看一下这部分代码。 https://github.com/xamarin/Xamarin.Forms/blob/master/Xamarin.Forms.Platform.Android/AppCompat/TabbedPageRenderer.cs
在Relativelayout上添加两个视图,BottomNavigation视图是第二个视图。
创建CustomTabbedPageRenderers类:
class CustomTabbedPageRenderers: TabbedPageRenderer
{
public CustomTabbedPageRenderers(Context context) : base(context)
{
}
private AWidget.RelativeLayout _relativeLayout = null;
protected override void OnElementChanged(ElementChangedEventArgs<TabbedPage> e)
{
base.OnElementChanged(e);
_relativeLayout = (AWidget.RelativeLayout)this.GetChildAt(0);
changeTabsFont();
}
private void changeTabsFont()
{
//Typeface font = Typeface.CreateFromAsset(Android.App.Application.Context.Assets, "fonts/" + Constants.FontStyle);
BottomNavigationView bottomnavigationview = (BottomNavigationView)_relativeLayout.GetChildAt(1);
int menucount = bottomnavigationview.Menu.Size();
for(int j=0;j<menucount;j++)
{
IMenuItem tab = bottomnavigationview.Menu.GetItem(j);
SpannableString spanString = new SpannableString(tab.TitleFormatted.ToString());
int end = spanString.Length();
spanString.SetSpan(new RelativeSizeSpan(1.5f), 0, end, SpanTypes.ExclusiveExclusive);
tab.SetTitle(spanString);
}
}
}
您可以使用SpannableString.SetSpan(对象what,int开头,int结束,int标志)更改文本大小,该值表示设置的格式,可以是前景色,背景色或可单击的文本
答案 1 :(得分:0)
我整夜都在努力解决相同的问题,但我发现所有解决方案都没有用(添加我自己的样式,我真的不想创建自定义渲染器)。最终,我看了James Montemagno的这篇文章:https://montemagno.com/control-text-size-on-android-bottom-navigation/挽救了我的夜晚! 我知道这是一篇过时的文章,但是如果有人弹出,可能会派上用场。
在Android项目中的资源/值中创建文件dimens.xml(如果在您的项目中尚不存在)。然后将其添加到您的文件中:
<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>