Het Roboto-lettertype gebruiken in Android Project

Ik heb één Android-project ontwikkeld. In dit project is het tekstlettertype standaard android:sans.

Nu wil ik het standaard tekstlettertype voor mijn hele project vervangen door roboto-lettertype.

Hoe kan ik dit doen?


Antwoord 1, autoriteit 100%

Je kunt het Roboto-lettertype hier downloaden:
https://fonts.google.com/specimen/Roboto. [Bijgewerkt 28-01-2020]

Je kunt het op de conventionele manier doen door Typefacete gebruiken, zoals dit:

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

Opmerking: het bovenstaande moet bij elke Activityworden gedaan.

Als u bijvoorbeeld het Roboto-lettertype wilt toepassen op alle TextView-en in uw toepassing, moet u uw eigen widget maken die TextView.

Er is een eenvoudige manier om dit te doen. Volg de stappen van dit antwoord op SO: https://stackoverflow.com/a/9199258/450534(volledige rekwisieten voor leocadiotinevoor de oplossing. Ik heb het eerder gebruikt en het werkt als een tierelier)

EDIT: beschouw your_namespaceals een markering om het een naam naar keuze te geven. Bij het integreren van Admob in XML gebruik ik bijvoorbeeld xmlns:ads. U kunt bijvoorbeeld: xmlns:fontof iets beschrijvends gebruiken.

Waar de custom.ttfvoor staat, het is in feite het lettertypebestand met zijn extensie dat u naar uw map assetsmoet kopiëren. Als u bijvoorbeeld ROBOTO-REGULAR.TTFgebruikt, vervangt u custom.ttfdoor ROBOTO-REGULAR.TTF. Met dit voorbeeld zou de hele code er als volgt uit moeten zien:

<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" />

Antwoord 2, autoriteit 36%

  1. Downloaden pak de Robotozip-bestand met lettertype

  2. Maak een map assetsin uw project als u er nog geen heeft. Ik ga ervan uit dat je Android Studio gebruikt, dit is hoe je het moet doen.

  3. Maak een nieuwe map in de activamap, noem deze font.

  4. Open je uitgepakte bestand en kopieer de lettertypestijl van je keuze. Uw lettertypemap ziet er als volgt uit:

Je kunt dit lettertype nu overal in je app als volgt gebruiken:

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

Antwoord 3, autoriteit 9%

txtView = (TextView) findViewById(R.id.txtView);
Typeface myTypeface = Typeface.createFromAsset(
                          this.getAssets(),
                          "font/Robot.otf");
txtView.setTypeface(myTypeface);

Antwoord 4, autoriteit 9%

Je kunt dit eenvoudig doen door de Typerlibte gebruiken.

Deze bibliotheek omvat de complexiteit van het toevoegen van een lettertypebron aan uw
project en recycle die recent gemaakte lettertypen om te maximaliseren
de prestaties van uw app.

Voeg dit toe aan uw build.gradle

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

Dan kunt u het lettertype gebruiken door

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));

Het bevat alle huidige lettertypen in Roboto
,Vind ik leuk:

   Font.ROBOTO_MEDIUM
    Font.ROBOTO_REGULAR
    etc.

Als u alle beschikbare lettertypen wilt bekijken, gebruikt u Android Studio Auto complete na de les Lettertypedoor op Ctrl+ spatiete drukken.


Antwoord 5, autoriteit 5%

Nog een opmerking voor het gebruik van de functie Typeface.createFromAsset(). Toen ik veel telefoontjes kreeg, had dit een aanzienlijke invloed op de opblaastijd. Om dit probleem op te lossen, hebben we een singleton-instantie van het Typefacegemaakt, zoals deze

public static Typeface getTypeFace() {
        if (fromAsset == null) {
            fromAsset = Typeface.createFromAsset(getContext().getAssets(), "fonts/Roboto-Medium.ttf");
        }
        return fromAsset;
    }

Other episodes