Mise à jour
Je sorti un paquet NuGet pour cela (voir MvvmCross.Calligraphy).
Il suffit de le télécharger et de modifier votre configuration comme:
public class Setup : MvxAndroidSetup
{
protected override MvxAndroidBindingBuilder CreateBindingBuilder()
{
return new CalligraphyMvxAndroidBindingBuilder();
}
}
Oui, parce que MvvmCross utilise une mise en page personnalisée gonfleur d'apporter dans les fixations et certains d'autres trucs magiques. Cela déclenche le gonfleur de calligraphie. Malheureusement, je n'ai pas trouvé de moyen d'utiliser le composant nuget package/xamarin. Vous devez créer une liaison propre et rendre CalligraphyFactory
disponible.
modifié metadata.xml
<attr path="/api/package[@name='uk.co.chrisjenx.calligraphy']/class[@name='CalligraphyFactory']"
name="visibility">public</attr>
usine personnalisée
public class MyFactory : MvxAndroidViewFactory
{
private CalligraphyFactory _factory;
public MyFactory()
{
_factory = new Calligraphy.CalligraphyFactory(Resource.Attribute.fontPath);
}
public override View CreateView(View parent, string name, Context context, IAttributeSet attrs)
{
var view = base.CreateView(parent, name, context, attrs);
view = _factory.OnViewCreated(view, context, attrs);
return view;
}
}
contructeurs liaison
class MyBindingBuilder : MvxAndroidBindingBuilder
{
protected override IMvxAndroidViewFactory CreateAndroidViewFactory()
{
return new MyFactory();
}
}
Setup.cs
public class Setup : MvxAndroidSetup
{
protected override MvxAndroidBindingBuilder CreateBindingBuilder()
{
return new MyBindingBuilder();
}
// ...
}
Activité
Vous n'avez pas besoin AttachBaseContext
. Malheureusement, il semble ne pas fonctionner avec MvxAppCompatActivity
, mais avec MvxActivity
. Je ne suis pas sûr de ce qui cause ce problème, pour le moment.
public class FirstView : MvxActivity
{
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
CalligraphyConfig.InitDefault(new CalligraphyConfig.Builder()
.SetDefaultFontPath("fonts/gtw.ttf")
.SetFontAttrId(Resource.Attribute.fontPath)
.DisablePrivateFactoryInjection()
.Build());
SetContentView(Resource.Layout.FirstView);
}
}
Voir
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:local="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="40dp"
local:MvxBind="Text Hello"
/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="40dp"
local:MvxBind="Text Hello"
fontPath="fonts/gtw.ttf"
/>
</LinearLayout>
Résultat
Grand merci pour votre réponse !! Cela fonctionnera également avec les styles? Avez-vous tous les boutons, etc. avec la même police? – cfl
@cfl Voir ma mise à jour en haut de la réponse. Cette solution fonctionne avec 'MvxActivity' et' MvxAppCompatActivity'. –
Merci pour votre paquet génial !!! Aller à l'essayer dès que possible – cfl