Search code examples
androidtextview

How to use Font Awesome icon in android application?


I want to use Font Awesome's icon set in my android application. I have some TextView to set those icons. I don't want to use any png image. My Textview is like this ->

<TextView
    android:id="@+id/userLogin"
    android:text="Login Now"
    android:clickable="true"
    android:onClick="login"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

No, I want to put a icon before the text Login Now. How to do that ?


Solution

  • You can follow this answer.

    First Download the fontawesome.ttf from here. And put the file in asset/fontawesome.ttf.

    Then Make a FontAwesome class which actually represents the textview of FontAwesome like this way.

    public class FontAwesome extends TextView {
    
    
        public FontAwesome(Context context, AttributeSet attrs, int defStyle) {
            super(context, attrs, defStyle);
            init();
        }
    
        public FontAwesome(Context context, AttributeSet attrs) {
            super(context, attrs);
            init();
        }
    
        public FontAwesome(Context context) {
            super(context);
            init();
        }
    
        private void init() {
        
        //Font name should not contain "/".
            Typeface tf = Typeface.createFromAsset(getContext().getAssets(),
                    "fontawesome.ttf");
            setTypeface(tf);
        }
        
    }
    

    now you can use the Fontawesome class as your need and also follow the cheatsheet. to get your icon's Unicode.

    So, your TextView will be like this.

    <PACKAGE_NAME.FontAwesome 
        android:id="@+id/userLogin"
        android:text="&#xf007;  Login Now"
        android:clickable="true"
        android:onClick="login"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />