Table of Contents
AACustomFont
Description
AACustomFont
is a lightweight custom font binder in XML directly in TextView
, Button
, EditText
, RadioButton
, CheckBox
tags. The library is aimed to avoid custom views for custom fonts in XML and to minimize the JAVA code for setting the TypeFaces for each view.
Demonstration
You can use AACustomFont
in any view that's extended from TextView
. For example, TextView
Button
EditText
RadioButton
CheckBox
Requirements
- Android Studio
- Android 2.3+
- JAVA 7+
- Gradle 3.0
Installation
AACustomFont
can be installed using Maven, Gradle, or manually.
Maven
Step 1. Add the JitPack repository to your build file
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository> </repositories>
Step 2. Add the dependency
<dependency>
<groupId>com.github.EngrAhsanAli</groupId>
<artifactId>AACustomFont</artifactId>
<version>1.1</version> </dependency>
Gradle
Step 1. Add the JitPack repository to your build file
allprojects {
repositories {
...
maven {
url 'https://jitpack.io'
}
}
}
Step 2. Add the dependency
dependencies {
compile 'com.github.EngrAhsanAli:AACustomFont:1.1'
}
Manual Installation
If you prefer not to use either of the above mentioned dependency managers, you can integrate AACustomFont
into your project manually by adding the files contained in the java folder to your project.
#Getting Started
Enable data binding
You need to enable data binding in order to bind custom fonts with your views. Add the following in your build.gradle.
android {
dataBinding {
enabled = true
}
}
Add font files
You can add the font files in assets/fonts directory. AACustomFont
will automatically grab your fonts from that directory, automatically. The font files may have .ttf or .otf extensions.
Start embedding the fonts!
You need to change your layout parent tag to layout
tag and put the rest in that tag.
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<!-- Put the layouts here -->
</layout>
Now set your fonts like:
<TextView
<!-- other properties -->
app:font="@{
`budidaya-italic`
}
" />
Note that the font name will always be in lowercase. If no font specified, it will get the default font in
app:font="@{ `` }
.
Bind the views!
You need to bind the views in java:
DataBindingUtil.setContentView(this, R.layout.your_layout);
// Using LayoutInflator DataBindingUtil.inflate(inflater, R.layout.your_layout, this, true);
You can set alias to your font name using the following method
AACustomFont.getInstance(this)
.setAlias("myfont", "Font-File.otf")
.setDefaultFontName("myfont");
You can override typefaces with your font name using the following method
// For all typefaces in given activity context with default font AACustomFont.getInstance(this).overrideFonts(this);
// For all typefaces in given activity context with specified font AACustomFont.getInstance(this).overrideFonts(this, "my_font");
// For all typefaces in given viewgroup with specified font AACustomFont.overrideFonts(button, "myfont");
Contributions & License
AACustomFont
is available under the MIT license. See the LICENSE file for more info.
Pull requests are welcome! The best contributions will consist of substitutions or configurations for classes/methods known to block the main thread during a typical app lifecycle.
I would love to know if you are using AACustomFont
in your app, send an email to Engr. Ahsan Ali