2012-11-24 7 views
48

Ho sviluppato un progetto Android. In questo progetto il carattere del testo è impostato su android: sans.Come utilizzare il carattere Roboto in Android Progetto

Ora voglio sostituire il carattere di testo predefinito in carattere roboto per il mio intero progetto.

Come posso fare questo?

+0

Controlla questo http://www.gadgetsaint.com/android/custom-fonts-textview-edittext-android/#.WNive2996Hs – ASP

risposta

62

È possibile scaricare il font Roboto da qui: https://www.google.com/design/spec/resources/roboto-noto-fonts.html.

È possibile farlo nel modo conventionaly utilizzando TypeFace, in questo modo:

Typeface typeface = Typeface.createFromAsset(getAssets(), fontName); 
textView.setTypeface(typeface); 

Nota: È possibile che questo dovrà essere fatto in ogni Activity.

In alternativa, se, ad esempio, si desidera applicare il carattere Roboto a tutti i TextView's nell'applicazione, sarà necessario creare il proprio widget che si estende TextView.

C'è un modo semplice per farlo. Seguire i passi di questa risposta su SO: https://stackoverflow.com/a/9199258/450534 (. Puntelli completi al leocadiotine per la soluzione che ho usato prima e funziona come un fascino)

EDIT: Pensate your_namespace come marcatore per voi per dare un nome di tua scelta. Ad esempio, quando si integra AdMob in XML, io uso xmlns:ads. È possibile utilizzare, ad esempio: xmlns:font o qualcosa di descrittivo.

Per quanto riguarda l'acronimo custom.ttf, si tratta essenzialmente del file di font con la relativa estensione che è necessario copiare nella cartella Assets. Ad esempio, se si utilizza ROBOTO-REGULAR.TTF, quindi sostituire lo custom.ttf con ROBOTO-REGULAR.TTF. Utilizzando questo esempio, l'intero codice dovrebbe essere questo questo:

<your.package.widget.TypefacedTextView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:font="http://schemas.android.com/apk/res/your.package" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="Custom fonts in XML are easy" 
    android:textColor="#FFF" 
    android:textSize="14dip" 
    font:typeface="ROBOTO-REGULAR.TTF" /> 
+5

Font può essere trovato in SDK in 'piattaforme/android-X/data/font/'dall'X 11 (se ricordo bene quando è stato introdotto). –

+0

@ WebnetMobile.com: lo so. Ma penso che ce ne siano alcuni nell'SDK. Quello fuori dalla pagina web di Android ha 16. –

+0

Sidddharth Lele: hai menzionato nel file xml che your_namespace, che cos'è? , e la mia cartella di assest non ha custom.tff, quindi cosa fare, e qual è l'uso di custom.ttf ?? – Jeeva

6
txtView = (TextView) findViewById(R.id.txtView); 

Typeface myTypeface = Typeface.createFromAsset(
          this.getAssets(), 
          "font/Robot.otf"); 

txtView.setTypeface(myTypeface); 
3

più Un'osservazione per l'utilizzo del Typeface.createFromAsset() funzione. Quando ho avuto molte chiamate su di esso ha avuto un impatto significativo sul tempo di gonfiaggio. Per ovviare a questo problema abbiamo creato un'istanza singleton della Typeface come questo

public static Typeface getTypeFace() { 
     if (fromAsset == null) { 
      fromAsset = Typeface.createFromAsset(getContext().getAssets(), "fonts/Roboto-Medium.ttf"); 
     } 
     return fromAsset; 
    } 
21
  1. Download e decomprimere il file zip di carattere Roboto

  2. Creare una cartella assets nel progetto se non si dispone di già uno. Supponendo che tu stia utilizzando Android Studio, ecco come farlo. enter image description here

  3. Creare una nuova directory nella cartella delle risorse, denominarla font.

  4. Aprire il file decompresso e copiare lo stile del carattere desiderato.La cartella carattere shouls simile a questa:

enter image description here

È ora possibile utilizzare questo tipo di carattere in qualsiasi punto della app come questo:

Typeface roboto = Typeface.createFromAsset(context.getAssets(), 
    "font/Roboto-Bold.ttf"); //use this.getAssets if you are calling from an Activity 
    txtView.setTypeface(roboto); 
+0

Quindi questo dovrebbe essere fatto per ogni widget ?? Orribile. – f470071

6

È possibile farlo facilmente usando il Typerlib.

Questa libreria avvolge la complessità di aggiungere una risorsa di carattere nel progetto e riciclare quelli di carattere recentemente creata inorder per massimizzare perfromance della tua app.

Aggiungi questo al vostro build.gradle

dependencies { 
    compile 'com.elmargomez.typer:typerlib:1.0.0' 
} 

Quindi è possibile utilizzare il tipo di carattere da

TextView txtView1 = (TextView) findViewById(R.id.yourTxtView1); 
TextView txtView2 = (TextView) findViewById(R.id.yourTxtView2); 
TextView txtView3 = (TextView) findViewById(R.id.yourTxtView3); 
TextView txtView4 = (TextView) findViewById(R.id.yourTxtView4); 

txtView1.setTypeface(Typer.set(yourContext).getFont(Font.ROBOTO_REGULAR)); 
txtView2.setTypeface(Typer.set(yourContext).getFont(Font.ROBOTO_CONDENSED_ITALIC)); 
txtView3.setTypeface(Typer.set(yourContext).getFont(Font.ROBOTO_THIN)); 
txtView4.setTypeface(Typer.set(yourContext).getFont(Font.ROBOTO_BOLD)); 

Esso comprende tutti i caratteri attuali Roboto , come:

Font.ROBOTO_MEDIUM 
    Font.ROBOTO_REGULAR 
    etc. 

Per visualizzare tutto i font disponibili utilizzano Android Studio Auto completo dopo la classe Font premendo Ctrl + spazio.

Problemi correlati