A full example of custom fonts in XML using data binding and including font caching.
Java
Latest commit 157fab5 Aug 15, 2016 @lisawray committed on GitHub Merge pull request #7 from httpdispatch/master
Avoid usage of the custom application

README.md

fontbinding

Easy custom fonts in XML using data binding.

No setup required, no extra Java code, and no custom views.

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:font="@{`alegreya`}"
    />

Drawing

This example includes a simple font cache that automatically loads names from your assets/fonts folder and lazy-loads typefaces. Just drag and drop font files and use them in XML by their normal or lowercase filenames (e.g. "Roboto-Italic" or "roboto-italic" for Roboto-Italic.otf). That's it!

Data binding

Make sure to use the data binding framework to inflate your layout.

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        DataBindingUtil.setContentView(this, R.layout.activity_main);
    }
}

More about data binding: http://developer.android.com/tools/data-binding/guide.html

Custom naming

You can set custom names for your fonts, but you don't have to.

FontCache.getInstance().addFont("alegreya", "Alegreya-Regular.ttf");

Note:

It's not currently possible to define custom attributes in styles using data binding. If you require this, check out Calligraphy by Chris Jenx.