2009-09-15 12 views
57

Voglio usare caratteri esterni nella mia app. Ho provato ad aggiungere nuovo fonts utilizzando AssetManager ma non ha funzionato. Qui di seguito è il mio codice:Usa caratteri esterni in Android

Typeface face; 

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

textview.setTypeface(face); 

ma la sua non mostra il testo ...

Please help me con questo.

+1

..per essere ordinata si possono avere i caratteri di attività/cartella dei font e l'accesso Carattere volto; face = Typeface.createFromAsset (getAssets(), "font /" + "font.otf"); textview.setTypeface (face); –

risposta

63

AFAIK, Android non supporta OpenType. Utilizzare invece un carattere TrueType.


AGGIORNAMENTO: A quanto pare OpenType è ora supportato, almeno un po '. Originariamente non era supportato, quindi dovrai testare accuratamente il tuo font su qualsiasi versione di Android supportata dalla tua app.

+0

quindi stai dicendo che sono nella giusta direzione .. ho solo bisogno di usare il file ttf invece di otf ??? – mudit

+2

Sì. Dato il tuo codice, hai bisogno che il tuo font sia nella root della tua risorsa/directory, ma altrimenti dovrebbe andare bene con un font compatibile. – CommonsWare

+0

Il messaggio di errore indica alcune difficoltà di comunicazione tra l'emulatore e adb o Eclipse: non ha nulla a che fare con i caratteri. Scarica http://commonsware.com/Android/Android-src-2_1.zip e troverai un progetto Android che mostra il caricamento di un font TrueType. Tieni inoltre presente che Android 1.6 ora sembra consentire di caricare i caratteri dall'esterno dell'APK (ad esempio, uno scaricato separatamente). – CommonsWare

1

Avevo lo stesso problema. Il mio font non funzionava in Android, ma avevo bisogno che funzionasse. Usando un editor di font, ho copiato i caratteri del mio font nel font che viene fornito con l'esempio FontSampler da Android-src-2_1. Ha funzionato perfettamente.

Mentre ammetto che il mio metodo era discutibile dal punto di vista della proprietà intellettuale, in realtà non ho utilizzato il carattere originale, poiché tutti i caratteri sono stati sostituiti e tutti i riferimenti al vecchio carattere sostituito bene. Avevo provato a 'guardare' al modo in cui erano stati definiti i due tipi di carattere, ma anche il fatto che tutte le variabili dei caratteri corrispondessero non funzionava. Quindi in ned ho usato uno scheletro del font originale come modello per il nuovo font.

9

Android supporta OTF (non sono sicuro di quale versione dell'SDK ma funziona sicuramente con 1.6), stavo usando un font OTF per macchina da scrivere per un po 'ma il rendering non è neanche lontanamente preciso come con la versione TTF I finito usando (tramite convertitore di font online). La linea di base era dappertutto (alcune lettere erano piene di 2 pixel in più rispetto ad altre), e sui telefoni LDPI come l'HTC Wildfire il problema è stato notevolmente ingrandito a causa dei pixel più grandi.

12

Per accedere facilmente al nostro tipo di carattere, è necessario associarlo alla nostra applicazione in modo che il nostro codice possa successivamente caricarlo. Per fare questo, creiamo una cartella Fonts nel nostro patrimonio diretti

Questo può essere il tuo .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> 

Scrivi seguente codice nella classe .java

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

Android supporta entrambi i formati otf e ttf, ho provato entrambi.

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

questo è il passo che ho usato per entrambe le lingue inglese e locali

1

Usa Fontinator supporto IT stand sistema organizzato di negoziazione e TTF font

Si tratta di un Android-Library rendere più facile, da usare su misura Fonts .

https://github.com/svendvd/Fontinator

+0

È abbastanza buono, ma cambiando 1000+ TV a quelli personalizzati ... non troppo a portata di mano –

-3

È possibile utilizzare semplice libreria EasyFonts di terze parti per impostare varietà di carattere personalizzato al vostro TextView.Usando questa libreria non dovresti preoccuparti di scaricare e aggiungere font alla cartella assets/fonts. Inoltre sulla creazione di oggetti di tipo facciale.

Fornisce i seguenti volti di carattere.

  • Roboto
  • Droid Serif
  • Droid Robot
  • Libertà
  • Fun Raiser
  • Android Nazione
  • verde avocado
  • riconoscimento

Semplicemente:

TextView myTextView = (TextView)findViewById(R.id.myTextView); 
myTextView.setTypeface(EasyFonts.robotoThin(this)); 
Problemi correlati