fontbinding

Additional

Language
Java
Version
N/A
Created
Oct 20, 2015
Updated
May 26, 2017
Owner
Lisa Wray (lisawray)
Contributors
httpdispatch
Ed George (ed-george)
Lisa Wray (lisawray)
JohnUgwuadi
4
Activity
Badge
Generate
Download
Source code
APK file

Promotion

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

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.