155 votes

Comment utiliser les icônes et les symboles de "Font Awesome" dans une application Android native ?

J'essaie d'utiliser Font Awesome sur mon application, j'ai pu intégrer la police à l'aide de Typeface.createFromAsset() mais je veux aussi utiliser les icônes fournies par cette police, mais jusqu'à présent je n'ai pas réussi à le faire.

Cette police particulière contient des icônes à l'intérieur de la zone d'utilisation privée (PUA) d'Unicode, pour des choses comme les contrôles du lecteur multimédia, l'accès au système de fichiers, les flèches, etc.

Quelqu'un a-t-il utilisé des polices contenant des icônes et des symboles sur Android ? Est-ce possible ?

3 votes

2 votes

J'ai mis à jour le lien

24 votes

Je ne suis pas d'accord pour dire que ce sujet est hors sujet pour Stack Overflow. Il me semble qu'il correspond à ces ( stackoverflow.com/help/on-topic ), car il s'agit d'un problème de programmation spécifique (comment appliquer un jeu d'icônes basé sur une police spécifique à une plateforme mobile spécifique), et c'est un problème pratique, auquel il est possible de répondre (voir ma réponse ci-dessous, qui, je pense, l'illustre).

310voto

Keith Corwin Points 896

Font Awesome semble bien fonctionner pour moi dans mon application Android. J'ai fait ce qui suit :

  1. Copié fontawesome-webfont.ttf dans mon dossier d'actifs

  2. J'ai trouvé les entités de caractère pour les icônes que je voulais, en utilisant cette page : http://fortawesome.github.io/Font-Awesome/cheatsheet/

  3. Création d'une entrée dans strings.xml pour chaque icône. Par exemple, pour un cœur :

    <string name="icon_heart">&#xf004;</string>
  4. J'ai référencé cette entrée dans la vue de ma mise en page xml :

     <Button
         android:id="@+id/like"
         style="?android:attr/buttonStyleSmall"
         ...
         android:text="@string/icon_heart" />
  5. J'ai chargé la police dans ma méthode onCreate et je l'ai définie pour les vues appropriées :

    Typeface font = Typeface.createFromAsset( getAssets(), "fontawesome-webfont.ttf" );
    ...
    Button button = (Button)findViewById( R.id.like );
    button.setTypeface(font);

47 votes

Excellente idée. Mais attention aux problèmes de mémoire lorsqu'on crée constamment une nouvelle police de caractères pour chaque icône. Utilisez plutôt quelque chose comme Hashtable pour réutiliser la police de caractères de votre icône, comme suggéré ici : code.google.com/p/Android/issues/detail?id=9904#c7

1 votes

Je le fais comme ça : stackoverflow.com/questions/2973270/

4 votes

J'ai créé un projet pour cela : bitbucket.org/informatic0re/awesome-font-iconview

29voto

chiuki Points 4334

Essayez IcoMoon : http://icomoon.io

  • Choisissez les icônes que vous voulez
  • Attribuez des caractères à chaque icône
  • Télécharger la police

Disons que vous avez choisi l'icône de lecture, que vous lui avez attribué la lettre 'P' et que vous avez téléchargé le fichier. icomoon.ttf dans votre dossier d'actifs. C'est ainsi que vous affichez l'icône :

xml :

<TextView
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:textSize="48sp"
  android:text="P" />

java :

Typeface typeface = Typeface.createFromAsset(getAssets(), "icomoon.ttf");
textView.setTypeface(typeface);

J'ai donné une conférence sur la création de belles applications Android, qui comprend des explications sur l'utilisation des polices d'icônes, ainsi que l'ajout de dégradés pour rendre les icônes encore plus jolies : http://www.sqisland.com/talks/beautiful-Android

L'explication de la police d'icônes commence à la diapositive 34 : http://www.sqisland.com/talks/beautiful-Android/#34

10voto

liltof Points 59

Peut-être trop tard, mais j'ai eu le même besoin et j'ai donc publié ceci https://github.com/liltof/font-awsome-for-Android Il s'agit d'une version xml de Font awesome utilisable sous Android, comme l'a dit Keith Corwin.

J'espère que cela aidera d'autres personnes.

1 votes

Bienvenue sur SO. J'ai vu que votre code n'est pas trop long. Pourquoi ne pas le poster à cette réponse ? Les liens peuvent tomber en panne avec le temps.

0 votes

J'utilise ce super fichier .xml depuis des semaines. Mais je viens de réaliser qu'il manque fa_times. Pouvez-vous le mettre à jour ? Edit : oh, c'est fa_remove. ou icon_remove dans votre fichier.

0 votes

Comment ajouter du texte ainsi qu'une icône dans un bouton en utilisant une police géniale ? Par exemple, ajouter une icône à gauche ou à droite dans le bouton.

4voto

Oleksii Kropachov Points 1698

Il y a un petit et utile bibliothèque conçue à cet effet :

dependencies {
    compile 'com.shamanland:fonticon:0.1.9'
}

Obtenez une démo sur Google Play .

enter image description here

Vous pouvez facilement ajouter une icône basée sur une police dans votre mise en page :

<com.shamanland.fonticon.FontIconView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/ic_android"
    android:textSize="@dimen/icon_size"
    android:textColor="@color/icon_color"
    />

Vous pouvez gonfler font-icon comme Drawable à partir de xml :

<?xml version="1.0" encoding="utf-8"?>
<font-icon
    xmlns:android="http://schemas.android.com/apk/res-auto"
    android:text="@string/ic_android"
    android:textSize="@dimen/big_icon_size"
    android:textColor="@color/green_170"
    />

Code Java :

Drawable icon = FontIconDrawable.inflate(getResources(), R.xml.ic_android);

Liens :

0 votes

Très bonne bibliothèque, merci. Les définitions xml gonflables sont cependant un peu pénibles, je préfère utiliser directement le FontIconView.

0 votes

J'ai testé cela dans un Lenovo avec Android 4.2.2 et les icônes ne s'affichent pas, qu'est-ce que cela peut être ?

0 votes

Essayez la dernière version 0.1.9

2voto

Brian Points 1540

Consultez ce répertoire pour mettre en œuvre la fonctionnalité "Font awesome" dans Android.

https://github.com/bperin/FontAwesomeAndroid

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X