Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to set custom font in .xml file instead of .java file?

Tags:

android

I am creating one Application in which I want to set custom font.

But I can't use custom Fonts in .xml file, for using this I need to initialize each and every TextView in .java file.

This process is Too much lengthy and time consuming.

If anyone know then please help me...

like image 757
Ronak Selarka Avatar asked Apr 07 '16 10:04

Ronak Selarka


1 Answers

Android API 16+

Beginning with Android 8.0 (API 26), there is native support for setting the fonts in XML. However, using the support library extends this down to Android 4.1 (API 16).

enter image description here

1. Add a font to your project

  • Right click the res folder and go to New > Android Resource Directory. Type font as the name and font as the Resource type.
  • Copy and paste your font into the new res/font directory. I'm just using a single font in my example, the regular dancing script font. I renamed it to dancing_script.ttf just to avoid any potential naming problems with upper case or illegal characters.

2. Create a font-family XML file.

  • Right click the res/font folder and choose New > Font Resource File. Call it whatever you want. I'm calling mine my_custom_font.xml.
  • Paste in the following code. Note that the attributes are set twice, once for android (API 26+) and once for app (API 16+).

    <?xml version="1.0" encoding="utf-8"?> <font-family xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:app="http://schemas.android.com/apk/res-auto">     <font         android:fontStyle="normal"         android:fontWeight="400"         android:font="@font/dancing_script"         app:fontStyle="normal"         app:fontWeight="400"         app:font="@font/dancing_script"         /> </font-family> 

3. Set the font in XML

Now you can just use the fontFamily attribute to set the font in XML.

<TextView     android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:text="Hello World!"     android:fontFamily="@font/my_custom_font" /> 

Notes

  • Read the documentation for more help.
  • If you need to support pre-API 16, then just set the font programmatically.
like image 129
Suragch Avatar answered Sep 18 '22 11:09

Suragch