2013-08-26 17 views
20

I Ho una vista personalizzata che disegna il testo sulla tela. Voglio cambiare il carattere in un font memorizzato nella cartella delle risorse.Tipo di carattere Android createFromAsset

Sto utilizzando Android Studio, quindi ho creato una cartella src/main/assets e ho inserito i file ttf lì.

Paint txt = new Paint() 
Typeface font = Typeface.createFromAsset(getAssets(), "robotobold.ttf"); 
txt.setTypeface(font); 

problema è Android Studio non riconosce getAssets() dentro la mia visualizzazione personalizzata, tuttavia riconosce dentro la mia attività. Ho provato a passare Typeface dalla mia attività, ma quando lo faccio non cambia il font.

+0

Un suggerimento, se si desidera applicare carattere personalizzato da attività meglio creare una classe personalizzata che estende TextView all'interno del quale è possibile impostare il tipo di carattere e l'uso in layout xml in modo che, in fase di esecuzione, non sia necessario applicare il carattere tipografico per tutte le TextView. – Manjunath

+0

Trovato un utilizzo della libreria, questo contiene più viste come textview, editext, pulsante e molti altri http://stackoverflow.com/a/42001474/4446392 –

risposta

41

È possibile utilizzare l' tuoi ViewgetContext() metodo per ottenere la corrente Context, quindi utilizzarlo per ottenere i beni:

Typeface font = Typeface.createFromAsset(getContext().getAssets(), "robotobold.ttf"); 
0

Devi mettere i vostri beni cartella dentro 'Progetto' cartella e non nella cartella "src". Hai inserito il carattere nel numero "src/main/assets/robotobold.ttf" ecco perché non funziona. È necessario inserirlo in questo modo "/assets/robotobold.ttf".

+0

L'ho fatto inizialmente, ma poi ho attraversato questo: http: // StackOverflow .com/questions/16821182/load-a-simple-file-di-testo-in-android-studio –

+0

Quindi, quel collegamento funziona per voi? – Arshu

+0

No, è per questo che ho fatto la domanda. –

21

Prima di tutto, devi tenere la cartella all'interno del vostro assetsproject e non all'interno src/main .. E poi, creare una cartella chiamata fonts all'interno assets. poi, mettere la specifica carattere tipografico carattere ttf files all'interno it.You possibile utilizzare il tipo di carattere del carattere nella codifica come:

Typeface type = Typeface.createFromAsset(getAssets(),"fonts/filename.ttf"); 
textview.setTypeface(type); 
+0

grazie, stavo cercando "/ fonts/..." e android.os non riusciva a prendere il font. Rimuovendo il trattino, ha reso il sistema Android in grado di riconoscere il file del carattere. – sivi

0
Typeface robo = Typeface.createFromAsset(getActivity().getAssets(), "fonts/Roboto-Thin.ttf"); 
1

al fine di riutilizzare i caratteri tipografici nei miei progetti creo una classe piena di metodi di carattere tipografico, in questo modo Non devo creare un nuovo carattere tipografico ogni volta.

io chiamo la classe FontClass e nella classe c'è un metodo per ogni carattere che ho bisogno di usare, ad esempio:

public static Typeface getOpenSansRegular(Context c){ 
    return Typeface.createFromAsset(c.getAssets(), "OpenSans-Light.ttf"); 
} 

allora posso usarli in questo modo:

TextView text = (TextView) findViewById(R.id.textview); 
text.setTypeface(FontClass.getOpenSansRegular(getApplicationContext()); 
+0

Come si impedisce la creazione di un nuovo carattere tipografico ogni volta? – weston

0

Il mio errore è stata aggiunta la linea

Typeface mFont = Typeface.createFromAsset(this.getAssets(), "abc.ttf"); 

prima onCreate()

1

creato una cartella src/main/assets e posti i file dei font lì.

nell'attività

Typeface font = Typeface.createFromAsset(getAssets(), "Mukta-Regular.ttf"); 
tv.setTypeface(font); 

nel Frammento

Typeface.createFromAsset(getActivity().getAssets(), Mukta-Regular.ttf"); 
tv.setTypeface(font); 
Problemi correlati