web-dev-qa-db-fra.com

Utilisez des polices externes dans android

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

Typeface face;

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

textview.setTypeface(face);

mais ça ne montre pas le texte ...

S'il vous plait, j'ai besoin de votre aide avec ceci.

59
mudit

AFAIK, Android ne prend pas en charge OpenType. Utilisez plutôt une police TrueType.


PDATE: Apparemment, OpenType est maintenant pris en charge, au moins quelque peu. Elle n'était pas prise en charge à l'origine, vous voudrez donc tester soigneusement votre police sur toutes les versions de Android que votre application prendra en charge.

66
CommonsWare

Afin d'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 directement un dossier Polices dans nos actifs

Cela peut être votre .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);
12
Kirtikumar A.

Android prend en charge OTF (je ne sais pas de quelle version du SDK mais il fonctionne certainement avec 1.6), j'utilisais une police OTF de machine à écrire depuis un certain temps, mais le rendu est loin d'être aussi précis qu'avec la version TTF que j'ai fini par utiliser ( via le convertisseur de polices en ligne). La ligne de base était partout (certaines lettres dépassaient de 2 pixels les 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.

9
richardleggett

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

1
deepan

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

Il s'agit d'une bibliothèque Android qui facilite l'utilisation de polices personnalisées.

https://github.com/svendvd/Fontinator

1
Sven Nähler

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

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

1
dave evartt