Question

Je souhaite utiliser des polices externes dans mon application. J'ai essayé d'ajouter de nouvelles polices en utilisant AssetManager mais cela n'a pas fonctionné. Ci-dessous mon code:

Typeface face;

face = Typeface.createFromAsset(getAssets(), "font.otf");

textview.setTypeface(face);

mais sa ne montre pas le texte ...

Aidez-moi, s'il vous plaît.

Était-ce utile?

La solution

Autant que je sache, Android ne supporte pas OpenType. Utilisez plutôt une police TrueType.

UPDATE: Apparemment, OpenType est maintenant pris en charge, au moins un peu. Elle n’était pas prise en charge à l’origine. Vous devrez donc tester votre police de manière approfondie sur les versions d’Android prises en charge par votre application.

Autres conseils

Pour pouvoir accéder facilement à notre police, nous devons la regrouper avec notre application de manière à ce que notre code puisse ensuite la charger. Pour ce faire, nous créons un dossier Polices dans nos ressources directement

Ceci peut être votre fichier .xml

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
    android:id="@+id/DefaultFontText"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:textSize="30sp"
    android:text="Here is some text." />
<TextView
    android:id="@+id/CustomFontText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="30sp"
    android:text="Here is some text.">
    </TextView>

Écrivez le code suivant dans votre classe .java

Typeface tf = Typeface.createFromAsset(getAssets(),
            "fonts/BPreplay.otf");
    TextView tv = (TextView) findViewById(R.id.CustomFontText);
    tv.setTypeface(tf);

Android prend en charge OTF (je ne sais pas à partir de quelle version du SDK, mais cela fonctionne définitivement avec la version 1.6), j'utilisais une police OTF de machine à écrire pendant un moment, mais le rendu est loin d'être aussi précis que dans la version TTF que j'ai terminée en utilisant (via le convertisseur de polices en ligne). La ligne de base était omniprésente (certaines lettres dépassaient de 2 pixels de plus que d’autres), et sur les téléphones LDPI comme le HTC Wildfire, le problème est considérablement amplifié en raison des pixels plus grands.

J'avais le même problème. Ma police ne fonctionnait pas sous Android non plus, mais j'en avais besoin pour fonctionner. À l'aide d'un éditeur de polices, j'ai copié les caractères de ma police dans la police fournie avec l'exemple FontSampler d'Android-src-2_1. Cela a fonctionné parfaitement.

Bien que je reconnaisse que ma méthode était discutable du point de vue de la propriété intellectuelle, je n'ai pas utilisé la police d'origine, car tous les caractères ont été remplacés et toutes les références à l'ancienne fonte ont également été remplacées. . J'avais essayé de "regarder" la façon dont les deux polices étaient définies, mais la comparaison de toutes les variables de police ne fonctionnait pas non plus. Donc, dans le Net, j’ai utilisé un squelette de la police d’origine comme modèle pour la nouvelle police.

Android prend en charge les formats otf et ttf. Je les ai expérimentés tous les deux.

tv3 = (TextView)findViewById(R.id.tv1);
    Typeface typeFace = Typeface.createFromAsset(getAssets(), "fonts/TRAJANPRO-BOLD.OTF");
    tv3.setTypeface(typeFace);

c'est l'étape que j'ai utilisée pour l'anglais et les langues locales

Utilisez Fontinator, il prend en charge les polices OTF et TTF

C’est une bibliothèque Android facilitant l’utilisation de polices personnalisées.

https://github.com/svendvd/Fontinator

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top