我在Xamarin Forms中有以下代码:
<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"
时更改tabbar的文本大小。
在过去,如果你不使用,
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上添加两个视图,BottomNavigationview是第二个。
创建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(Object what,int start,int end,int flags)来更改文本大小,What表示设置的格式,可以是前景色,背景色或可点击文本。