Use Font Awesome icons in android apps

Use Font Awesome icons in android apps
Advertisement
Trust this source on GoogleAlways see our reviews and tech guides first in search results
Add trusted source

Font Awesome is a widely used icon toolkit that may be found on a variety of websites. It features both a free and a paid icon collection, but the free collection has the majority of the icons. Unicode () will be used to represent each icon. In TextView, we utilize this unicode to display the icon. All text styling elements (color, size, paddings, etc.) can be added because it’s a regular TextView.

If you wish to display the android Robot logo, for example, you can use unicode as the TextView value.

1. Font Awesome Android Library

To use the Font Awesome icon collection, simply add the font awesome font files to your assets and apply the relevant fontFace to the TextView, which is a much easier operation. However, we’d like the icons to appear in other widgets as well, such as Buttons, Menus, Bottom Navigation, and Navigation Drawer. It requires some effort to display an icon in a non-textual view. As a result, I created a library that has all of the essential methods for rendering icons in numerous widgets.

To get started, include the fontawesome in your build.gradle and sync your project.

Advertisement
dependencies {
    // font awesome
    implementation 'info.androidhive:fontawesome:0.0.5'
}

2. How to use it?

(adsbygoogle = window.adsbygoogle || []).push({});

Displaying Icon in TextView

Using the FontTextView text and specifying the proper icon name as text value is the simplest way to display the font icon. Because this widget is derived from AppCompatTextView, it inherits all of the text view properties.

<info.androidhive.fontawesome.FontTextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/fa_calendar_check_solid"
            android:textColor="@color/icon_color"
            android:textSize="@dimen/icon_size"
            app:solid_icon="true" />
  • solid_icon: To display solid icon, set this value as true.
  • brand_icon: To display brand icon, set this value as true.

Using FontDrawable

Using the icon in xml layout is easy, but if you want to use the icon for other widget like button or menu, you can use the FontDrawable element to apply the icon.

For an example, if you want to use the font awesome icon to Floating Action Button, you can use the FontDrawable as shown below.

FloatingActionButton fab = findViewById(R.id.fab);
 
// using paper plane icon for FAB
FontDrawable drawable = new FontDrawable(this, R.string.fa_paper_plane_solid, true, false);
 
// white color to icon
drawable.setTextColor(ContextCompat.getColor(this, android.R.color.white));
fab.setImageDrawable(drawable);

Using in Menus (Bottom Navigation, Navigation Drawer etc.,)

You can also use font icons in widgets that use the menu file to generate elements like Toolbar icons, Bottom Navigation, and Navigation Drawer, among others. You can use the FontDrawable to configure the icons in menus, however it requires a few hacks using java code.

Advertisement

The below example shows rending the font awesome icons in Navigation Drawer menu. Full example can be found here.

public class MainActivity extends AppCompatActivity
        implements NavigationView.OnNavigationItemSelectedListener {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        intDrawerLayout();
    }
 
    /**
     * Changing navigation drawer icons
     * This involves looping through menu items and applying icons
     */
    private void intDrawerLayout() {
        NavigationView navigationView = findViewById(R.id.nav_view);
        navigationView.setNavigationItemSelectedListener(this);
 
        ImageView iconHeader = navigationView.getHeaderView(0).findViewById(R.id.nav_header_icon);
        FontDrawable drawable = new FontDrawable(this, R.string.fa_font_awesome, false, true);
        drawable.setTextColor(ContextCompat.getColor(this, android.R.color.white));
        drawable.setTextSize(50);
        iconHeader.setImageDrawable(drawable);
 
        int[] icons = {
                R.string.fa_home_solid, R.string.fa_calendar_alt_solid, R.string.fa_user_solid,
                R.string.fa_heart_solid, R.string.fa_comment_solid, R.string.fa_dollar_sign_solid, R.string.fa_gift_solid
        };
        renderMenuIcons(navigationView.getMenu(), icons, true, false);
 
        int[] iconsSubmenu = {R.string.fa_cog_solid, R.string.fa_sign_out_alt_solid};
 
        renderMenuIcons(navigationView.getMenu().getItem(7).getSubMenu(), iconsSubmenu, true, false);
    }
 
    /**
     * Looping through menu icons are applying font drawable
     */
    private void renderMenuIcons(Menu menu, int[] icons, boolean isSolid, boolean isBrand) {
        for (int i = 0; i < menu.size(); i++) {
            MenuItem menuItem = menu.getItem(i);
            if (!menuItem.hasSubMenu()) {
                FontDrawable drawable = new FontDrawable(this, icons[i], isSolid, isBrand);
                drawable.setTextColor(ContextCompat.getColor(this, R.color.icon_nav_drawer));
                drawable.setTextSize(22);
                menu.getItem(i).setIcon(drawable);
            }
        }
    }
}
Featured Deal
1 / 5
Google Pixel Watch 5 (45mm)

Google Pixel Watch 5 (45mm)

5.0 / 5.0
Google Pixel Watch 4

Google Pixel Watch 4

4.8 / 5.0
396.00$499.99-21%
Buy on Amazon
Samsung Galaxy Watch 8

Samsung Galaxy Watch 8

4.9 / 5.0
$289.99$349.99-17%
Buy on Amazon
DEAL
Google Pixel 11 Pro

Google Pixel 11 Pro

5.0 / 5.0
1,099.00$1,299.00-15%
Buy on Amazon
DEAL!
Samsung Galaxy Watch Ultra (2025)

Samsung Galaxy Watch Ultra (2025)

5.0 / 5.0
$449.99$649.99-31%
Buy on Amazon
* As an Amazon Associate, Droid Tools earns from qualifying purchases. Disclosure.
Robert Haba
Robert HabaFounder · Editor-in-Chief

Robert Haba is the founder and editor-in-chief of Droid Tools. A lifelong gadget enthusiast with over a decade following the Android ecosystem, he built this publication to cut through the noise and give readers honest, real-world coverage of the tech they actually use.

Advertisement

Comments & Discussions

Join the conversation! We use Disqus to handle comments. Click the button below to load the comment section.

Advertisement
More Stories

Keep Reading

Luiza Mosneagu1 min read

Google Tensor G6 powers Pixel 11 with faster AI and 4K Portrait Video

Google Tensor G6 is the custom processor powering the Pixel 11 series and Pixel 11 Pro Fold, with Google prioritizing energy efficiency and on-device AI over benchmark-leading specifications. The chip brings an upgraded CPU, a faster TPU, a new ISP, and a custom modem, enabling features that include 4K Portrait Video, Instant Night Sight, and [&hellip;]

google tensor g6 performance improvements
Robert Haba1 min read

Google Pixel HiLight brings call and Gemini alerts to Pro models

Google Pixel HiLight is the official name of the ambient LED system built around the camera flash on Google’s new Pro phones. Previously known through leaks as Pixel Glow, the feature can show favorite-contact calls and Gemini activity while the phone remains face down. It is exclusive to the Pixel 11 Pro, Pixel 11 Pro [&hellip;]

HiLight on google pixel pro
Cristian Penisoara1 min read

Google Assistant Shutdown Begins September 4 as Gemini Takes Over

Google will begin shutting down Google Assistant on Android phones starting September 4, moving users over to Gemini as the company's default mobile voice assistant. The change comes via an email Google has started sending to users, as reported by Ars Technica. Rollout Will Happen Gradually The transition won't happen for everyone on the same [&hellip;]

google assistant close
Robert Haba1 min read

Pixel 11 Series Launch Date Set for August 12: What to Expect

Google is set to unveil its Pixel 11 series on August 12, with the Pixel 11, Pixel 11 Pro, Pixel 11 Pro XL, and Pixel 11 Pro Fold expected to headline the company's annual hardware event. Google is also expected to announce the Pixel Watch 5 and could introduce the Pixel Tag, its first Bluetooth [&hellip;]

google pixel 11 lineup