Come utilizzare il carattere personalizzato in un progetto scritto in Android Studio


Risposte:


344

Aggiornamento 2020:

Crea una cartella denominata font all'interno della cartella res e copia il font

inserisci qui la descrizione dell'immagine

<TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:fontFamily="@font/abc_font" />

Per uso programmatico:

textView.setTypeface(ResourcesCompat.getFont(context, R.font.abc_font))

10
Chiunque carica caratteri personalizzati dalle risorse dovrebbe notare che esiste un bug in Android 5.0 in cui alcuni caratteri non si caricano. Mentre questo problema è stato risolto in Android 5.1, una soluzione alternativa per supportare 5.0 è riscrivere i caratteri ttf. Vedere questo problema per ulteriori informazioni stackoverflow.com/questions/27269264/...
BrentM

La seconda opzione ha funzionato perfettamente per me. Grazie per questo!
Emzor,

2
ho usato this.getContext (). getApplicationContext (). getAssets () per trovare la directory (android studio 2.1)
kuzdu,

1
@kuthue onCreate () va bene. Se vuoi cambiare il carattere mentre l'utente sta usando l'app, puoi metterlo nel punto in cui desideri che sia cambiato. Funziona anche con i pulsanti
Rockhammer,

1
Come posso impostare che il carattere predefinito per l'intero progetto sarà quello personalizzato che sto aggiungendo? È quello che sta facendo il primo esempio di codice?
Yonatan Nir,

98

https://i.stack.imgur.com/i6XNU.png

  1. Seleziona File> Nuovo> Cartella> Cartella risorse

  2. Fai clic su Fine

  3. Fare clic con il tasto destro del mouse sulle risorse e creare una cartella denominata font

  4. Inserisci il tuo file di caratteri in risorse > caratteri

  5. Usa il codice qui sotto per cambiare il carattere di textView

    TextView textView = (TextView) findViewById(R.id.textView);
    Typeface typeface = Typeface.createFromAsset(getAssets(), "fonts/yourfont.ttf");
    textView.setTypeface(typeface);

12
come usare questo in XML?
Suisse,

4
Questo tutorial spiega come usarlo in un XML: stacktips.com/tutorials/android/…
Dinesh

@Suisse Support Library 26 fornisce pieno supporto a questa funzione su dispositivi con API versione 14 e collegamento
Ehsan.R

66

Esistono molti modi per impostare la famiglia di caratteri personalizzati sul campo e sto usando come quello di seguito.

Per aggiungere caratteri come risorse, procedi come segue in Android Studio:

1) Fai clic con il pulsante destro del mouse sulla cartella res e vai su Nuovo> Directory risorse Android. Viene visualizzata la finestra Nuova directory delle risorse.

2) Nell'elenco Tipo di risorsa, selezionare il carattere e quindi fare clic su OK.

Nota: il nome della directory delle risorse deve essere font.

3) Aggiungi i tuoi file di font nella cartella dei font. inserisci qui la descrizione dell'immagine

Aggiungi il carattere nella vista desiderata nel tuo file xml:

inserisci qui la descrizione dell'immagine

Nota: ma hai richiesto le seguenti cose per quello:

  1. Android Studio sopra al canarino 3.0.

  2. La tua attività estende AppCompatActivity.

  3. Aggiorna il tuo file Gradle in questo modo:

    compileSdkVersion 26
    buildToolsVersion "26.0.1"
    defaultConfig {        
        minSdkVersion 19
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

buildtoolsVersionsopra a 26 e minimo targetSdkVersionrichiesto 26

  1. Aggiungi dipendenze nel file build.gradle:
classpath 'com.android.tools.build:gradle:3.0.0-beta4'
  1. gradle-wrapper.properties:
distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip

42

Penso che invece di scaricare il file .ttf possiamo usare i caratteri di Google. È molto facile da implementare. solo tu devi seguire questi passaggi. passaggio 1) Aprire layout.xml del progetto e selezionare la famiglia di caratteri della vista testo negli attributi (per lo screenshot di riferimento allegato) inserisci qui la descrizione dell'immagine

passaggio 2) La famiglia di caratteri selezionare l'opzione Altri caratteri .. se il carattere non è presente. quindi vedrai aprirsi una nuova finestra, lì puoi digitare il carattere richiesto e selezionare il carattere desiderato da quell'elenco, ad esempio) normale, grassetto, corsivo ecc., come mostrato nell'immagine qui sotto. inserisci qui la descrizione dell'immagine

passo 3) Quindi osserverai che una cartella di caratteri verrà generata automaticamente nella cartella / res con il tuo file xml di caratteri selezionato.

inserisci qui la descrizione dell'immagine

Quindi puoi utilizzare direttamente questa famiglia di caratteri in xml come

      android:fontFamily="@font/josefin_sans_bold"

o dal punto di vista grammaticale puoi farlo usando

  Typeface typeface = ResourcesCompat.getFont(this, R.font.app_font);
  fontText.setTypeface(typeface);

Questa non è una risposta alla domanda. Non tutti i caratteri sono disponibili su Google Fonts.
Matt Fletcher,

2
Bella risposta! Se non riesci a trovare il tuo carattere nell'elenco - caricalo nella cartella delle risorse o definiscilo tramite l'xml
Edgar Khimich

21

Ciao qui abbiamo un modo migliore per applicare i caratteri su EditTexts e TextViews su Android contemporaneamente e applicarlo in tutto il progetto.

Prima di tutto devi creare la cartella dei caratteri. Ecco i passaggi.

1: vai su (cartella progetto) Quindi app> src> main

2: Crea cartelle denominate 'risorse / caratteri' nella cartella principale.

3: inserisci i tuoi caratteri nella cartella dei caratteri. Qui ho "MavenPro-Regular.ttf"

Ecco i passaggi per l'applicazione di caratteri personalizzati su EditText e utilizzando questo approccio è possibile applicare caratteri su ogni input.

1: Crea una classe MyEditText (il tuo nome preferito ...)

2: che estende EditText

3: applica il tuo carattere

Ecco un esempio di codice;

public class MyEditText extends EditText {

    public MyEditText(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        init();
    }

    public MyEditText(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public MyEditText(Context context) {
        super(context);
        init();
    }

    private void init() {
        if (!isInEditMode()) {
            Typeface tf = Typeface.createFromAsset(getContext().getAssets(), "fonts/MavenPro-Regular.ttf");
            setTypeface(tf);
        }
    }

}

E in Ecco il codice come usarlo.

MyEditText editText = (MyEditText) findViewById(R.id.editText);

editText.setText("Hello");

O nel tuo file xml

   <MyEditText
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:textColor="#fff"
    android:textSize="16dp"
    android:id="@+id/editText"
    />

Quella classe mi ha dato quell'errore in fase di esecuzione: errore durante il gonfiaggio della classe MyEditText
GMX

Fare riferimento a questo collegamento per trovare alcuni suggerimenti su come risolvere l'errore.
Mohammad Naim Dahee,


Con l'attuale build, penso che dovresti cambiarlo in "estende AppCompatEditText".
Diesel

15

Con Support Library 26.0 (e Android O) i caratteri possono essere caricati facilmente dalle risorse con: inserisci qui la descrizione dell'immagine

Typeface typeface = ResourcesCompat.getFont(Context context, int fontResourceId) 

Documenti per il metodo .

Maggiori informazioni possono essere trovate qui.


9

Voglio aggiungere la mia risposta per Android-O e Android Studio 2.4

  1. Crea una cartella chiamata font nella cartella res . Scarica i vari tipi di carattere che desideri aggiungere al tuo esempio di progetto . Caratteri Google

  2. All'interno della famiglia di caratteri utente XML

    esempio :

    <TextView
        android:fontFamily="@font/indie_flower"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="10dp"
        android:text="@string/sample_text" />

3.Se vuoi che sia programmatico, usa il seguente codice

Typeface typeface = getResources().getFont(R.font.indie_flower);
textView.setTypeface(typeface);

per maggiori informazioni segui il link al mio post sul blog Stili di carattere per Android con Android Studio 2.4


6
Nota: se desideri promuovere il tuo prodotto / blog, devi rivelare la tua affiliazione , altrimenti la tua risposta potrebbe essere contrassegnata come spam. Si prega di leggere Come non essere uno spammer
David Post

Sì @PetterFriberg
Suresh Maidaragi,

8

Come da nuova funzionalità disponibile in Android O, risorse di font in XML sono disponibili come nuove funzionalità.

Per aggiungere caratteri come risorse, procedi come segue in Android Studio:

1) Fai clic con il pulsante destro del mouse sulla cartella res e vai su Nuovo> Directory risorse Android . Viene visualizzata la finestra Nuova directory delle risorse.

2) Nell'elenco Tipo di risorsa, selezionare il carattere e quindi fare clic su OK.

Nota: il nome della directory delle risorse deve essere font.

3) Aggiungi i tuoi file di font nella cartella dei font.

Puoi accedere alle risorse dei font con l'aiuto di un nuovo tipo di risorsa, font. Ad esempio, per accedere a una risorsa di font, utilizzare @ font / myfont o R.font.myfont.

per esempio. Typeface typeface = getResources().getFont(R.font.myfont); textView.setTypeface(typeface);


2
dovrebbe essere ResourcesCompat.getFont (contesto, R.font.your_font)
Trung Le

7

Puoi utilizzare la libreria di terze parti EasyFonts facile e semplice per impostare una varietà di font personalizzati per il tuoTextView . Usando questa libreria non dovresti preoccuparti di scaricare e aggiungere caratteri nella cartella risorse / caratteri. Anche sulla creazione di oggetti Typeface. Sarai libero di creare anche la cartella delle risorse.

Semplicemente:

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

Esistono molti tipi di caratteri forniti da questa libreria.


6

1 ° aggiungi il file font.ttf nella cartella dei caratteri. Quindi aggiungere questa riga nel metodo onCreate

    Typeface typeface = ResourcesCompat.getFont(getApplicationContext(), R.font.myfont);
    mytextView.setTypeface(typeface);

Ed ecco il mio XML

            <TextView
            android:id="@+id/idtext1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="7dp"
            android:gravity="center"
            android:text="My Text"
            android:textColor="#000"
            android:textSize="10sp"
        />

4
  1. Crea risorse cartella in Progetto -> app (o il nome della tua app) -> src -> principale -> clic destro -> Nuovo -> Directory.
  2. Quindi creare una nuova directory all'interno delle risorse denominata "caratteri".

Per assegnare il carattere a textView:

TextView textView = (TextView) findViewById(R.id.your_textView);

final Typeface font = Typeface.createFromAsset(context.getAssets(), "fonts/your_font_name");

your_font_name include l'estensione del carattere.


3

Se sei molto nuovo su Android come me, questo può essere un po 'complicato. Assicurati di chiamare:

TextView myTextView = (TextView) findViewById(R.id.textView);
Typeface typeface=Typeface.createFromAsset(getAssets(), "fonts/your font.ttf");
myTextView.setTypeface(typeface);

metodo all'interno di un metodo come onCreate.


3

Android 8.0 (API 26) ha introdotto nuove funzionalità relative ai caratteri.

1) I caratteri possono essere usati come risorse.

2) Font scaricabili.

Se si desidera utilizzare caratteri esterni nell'applicazione Android, è possibile includere file di caratteri in apk o configurare caratteri scaricabili.

Compresi file di caratteri in APK : è possibile scaricare file di caratteri, salvarli in filer res / font, definire la famiglia di caratteri e utilizzare la famiglia di caratteri negli stili.

Per maggiori dettagli sull'uso di caratteri personalizzati come risorse, consultare http://www.zoftino.com/android-using-custom-fonts

Configurazione dei caratteri scaricabili : definire il carattere fornendo i dettagli del fornitore del carattere, aggiungere il certificato del fornitore del carattere e utilizzare il carattere negli stili.

Per ulteriori dettagli sui caratteri scaricabili, consultare http://www.zoftino.com/downloading-fonts-android



1
Inoltre, solo perché i caratteri personalizzati / scaricabili sono stati introdotti in Android O (8.0), non significa che non ci sia compatibilità con le versioni precedenti. Consulta la documentazione ufficiale su come implementare i caratteri personalizzati. Tieni presente che potrebbe essere necessario installare anche Android Studio 3.0.
anthonymonori il

1

Prima crea una assetscartella, quindi crea una fontscartella al suo interno.

Quindi puoi impostare fontda assetso directorycome il seguente:

public class FontSampler extends Activity {
    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.main);

        TextView tv = (TextView) findViewById(R.id.custom);
        Typeface face = Typeface.createFromAsset(getAssets(), "fonts/HandmadeTypewriter.ttf");

        tv.setTypeface(face);

        File font = new File(Environment.getExternalStorageDirectory(), "MgOpenCosmeticaBold.ttf");

        if (font.exists()) {
            tv = (TextView) findViewById(R.id.file);
            face = Typeface.createFromFile(font);

            tv.setTypeface(face);
        } else {
            findViewById(R.id.filerow).setVisibility(View.GONE);
        }
    }
} 

1

Ora ci sono molti modi per applicare il carattere uno dei modi più semplici è come questo, 1) Fare clic con il tasto destro del mouse sulla cartella res e andare su Nuovo> Directory delle risorse Android.

2) Dall'elenco Tipo di risorsa, selezionare il carattere, quindi fare clic su OK.

3) Inserisci i tuoi file dei caratteri nella cartella dei caratteri.


1

Aggiungi i tuoi caratteri alla cartella delle risorse in app / src / main / assets per creare una visualizzazione di testo personalizzata come questa:

class CustomLightTextView : TextView {

constructor(context: Context) : super(context){
    attachFont(context)
}
constructor(context: Context, attrs: AttributeSet):    super(context, attrs){
    attachFont(context)
}
constructor(context: Context, attrs: AttributeSet?,    defStyleAttr: Int) : super(context, attrs, defStyleAttr) {
    attachFont(context)
}
fun attachFont(context: Context) {
    this.setTypeface(FontCache.getInstance().getLightFont(context))
}

}

Aggiungi FontCache: in modo da non dover creare più e più volte caratteri tipografici come:

class FontCache private constructor(){

val fontMap = HashMap<String,Typeface>()

companion object {
    private var mInstance : FontCache?=null
    fun getInstance():FontCache = mInstance?: synchronized(this){
        return mInstance?:FontCache().also { mInstance=it }
    }
}

fun getLightFont(context: Context):Typeface?{
    if(!fontMap.containsKey("light")){
        Typeface.createFromAsset(context.getAssets(),"Gotham-Book.otf");
        fontMap.put("light",Typeface.createFromAsset(context.getAssets(),"Gotham-Book.otf"))
    }
    return fontMap.get("light")
}

}

E il gioco è fatto!

PSDal Android O, puoi aggiungere direttamente i caratteri.


1

inserisci i caratteri nella cartella delle risorse, quindi applica fontfamily: '' i tuoi caratteri


-1

Per i nuovi lettori

Puoi utilizzare questa libreria Viste dei caratteri personalizzati Gloxey

dipendenza dal grado

  dependencies{
           compile 'io.gloxey.cfv:custom-font-views:1.0.2'
    }

Come usare?

Crea risorse cartella -> caratteri . Copia i tuoi caratteri nella cartella dei caratteri .

Utilizzare l' app per la proprietà : font_name = "font_name_string" per applicare il carattere sulla vista.

Esempio

   <!--Font Names in srings.xml-->
       <string name="aadhunik">aadhunik.ttf</string>
       <string name="kung_fool">kungfool.ttf</string>
       <string name="skrova">skrova.otf</string>
       <string name="painting_in_the_sun_light">painting_in_the_sun_light.ttf</string>

   <!--Include views in layout.xml-->
       <io.gloxey.cfv.CFTextView
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:gravity="center"
       android:text="Aadhunik"
       android:textColor="#ff00"
       android:textSize="40sp"
       app:font_name="@string/aadhunik" />

       <io.gloxey.cfv.CFButton
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:text="Kung Fool"
       android:textColor="#154748"
       app:font_name="@string/kung_fool" />

       <io.gloxey.cfv.CFEditText
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:gravity="center"
       android:text="Hello world"
       android:textSize="30sp"
       app:font_name="@string/skrova" />

       <io.gloxey.cfv.CFCheckBox
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_gravity="center"
       android:text="Painting In The Sun Light"
       android:textSize="30sp"
       app:font_name="@string/painting_in_the_sun_light" />
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.