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 Typeface
te gebruiken, zoals dit:
Typeface typeface = Typeface.createFromAsset(getAssets(), fontName);
textView.setTypeface(typeface);
Opmerking: het bovenstaande moet bij elke Activity
worden 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_namespace
als 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:font
of iets beschrijvends gebruiken.
Waar de custom.ttfvoor staat, het is in feite het lettertypebestand met zijn extensie dat u naar uw map assets
moet 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%
-
Downloaden pak de
Roboto
zip-bestand met lettertype -
Maak een map
assets
in uw project als u er nog geen heeft. Ik ga ervan uit dat je Android Studio gebruikt, dit is hoe je het moet doen.
-
Maak een nieuwe map in de activamap, noem deze
font
. -
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 Typeface
gemaakt, zoals deze
public static Typeface getTypeFace() {
if (fromAsset == null) {
fromAsset = Typeface.createFromAsset(getContext().getAssets(), "fonts/Roboto-Medium.ttf");
}
return fromAsset;
}