我在我的Xamarin.Forms应用程序(在Android上)为标签定义自定义字体时遇到问题。
Tabbar.xml
<?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/sliding_tabs"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:background="?attr/colorPrimary"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:tabTextAppearance="@style/TabbarTitleText"
app:tabTextColor="@android:color/white"
app:tabSelectedTextColor="@android:color/white"
app:tabIndicatorColor="@android:color/white"
app:tabGravity="fill"
app:tabMode="fixed" >
<!--<TextView
style="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"
android:textColor="@android:color/white"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:id="@+id/tabbar_title" />-->
</android.support.design.widget.TabLayout>
我试图放一个textview但是没有编译。
我在styles.xml中创建的样式将被应用,但fontFamily属性
除外<style name="TabbarTitleText" parent="TextAppearance.AppCompat">
<item name="android:textSize">15dp</item>
<item name="android:fontFamily">fonts/Futura Book.ttf</item>
<item name="android:textAllCaps">false</item>
</style>
所有参数都正确吗?特别是 parent =
如果我使用自定义渲染器,它不起作用,因为在TabLayout中没有要检测的子元素。
对于我的工具栏,它可以正常工作,因为TextView会收到自定义渲染参数。
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@android:color/white"
android:theme="@style/MyActionBar"
android:background="@drawable/custom_background_bar"
android:elevation="3dp">
<TextView
style="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"
android:textColor="@android:color/white"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:id="@+id/toolbar_title" />
。
public class MyToolBarRenderer : NavigationPageRenderer
{
public MyToolBarRenderer(Context context) : base(context)
{
}
private Support.Toolbar _toolbar;
public override void OnViewAdded(Android.Views.View child)
{
base.OnViewAdded(child);
if (child.GetType() == typeof(Support.Toolbar))
_toolbar = (Support.Toolbar)child;
}
protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
{
base.OnElementPropertyChanged(sender, e);
var page = this.Element as NavigationPage;
if (page != null && _toolbar != null)
{
Typeface tf = Typeface.CreateFromAsset(Android.App.Application.Context.Assets, "fonts/Futura Book.ttf");
TextView title = (TextView)_toolbar.FindViewById(Resource.Id.toolbar_title);
title.SetText(page.CurrentPage.Title, TextView.BufferType.Normal);
title.SetTypeface(tf, TypefaceStyle.Normal);
}
}
}
我的所有观点都是NavigationPages,而不是任何TabbedPage。
在App.xaml.cs中我有这个
MainPage = new NavigationPage(new MainPage())
然后在MainPage
switch (Device.RuntimePlatform)
{
case Device.iOS:
centerPage = new NavigationPage(new Center_Main())
{
Title = TitleCenter
};
......
break;
default:
centerPage = new Center_Main()
{
Title = TitleCenter
};
rightPage = new Right_Main()
{
Title = TitleRight
};
.......
break;
}
然后每个xaml都是一个ContentPage。我基本上在开始时创建了一个Master Detail项目。