Set specific font in a styles.xml Set specific font in a styles.xml xml xml

Set specific font in a styles.xml


You can only use custom fonts via Java code, not through layout XML or styles/themes -- sorry!


TextViewPlus.java:

package com.example;import android.content.Context;import android.content.res.TypedArray;import android.graphics.Typeface;import android.util.AttributeSet;import android.util.Log;import android.widget.TextView;public class TextViewPlus extends TextView {    private static final String TAG = "TextView";    public TextViewPlus(Context context) {        super(context);    }    public TextViewPlus(Context context, AttributeSet attrs) {        super(context, attrs);        setCustomFont(context, attrs);    }    public TextViewPlus(Context context, AttributeSet attrs, int defStyle) {        super(context, attrs, defStyle);        setCustomFont(context, attrs);    }    private void setCustomFont(Context ctx, AttributeSet attrs) {        TypedArray a = ctx.obtainStyledAttributes(attrs, R.styleable.TextViewPlus);        String customFont = a.getString(R.styleable.TextViewPlus_customFont);        setCustomFont(ctx, customFont);        a.recycle();    }    public boolean setCustomFont(Context ctx, String asset) {        Typeface tf = null;        try {        tf = Typeface.createFromAsset(ctx.getAssets(), asset);          } catch (Exception e) {            Log.e(TAG, "Could not get typeface: "+e.getMessage());            return false;        }        setTypeface(tf);          return true;    }}

attrs.xml: (in res/values)

<?xml version="1.0" encoding="utf-8"?><resources>    <declare-styleable name="TextViewPlus">        <attr name="customFont" format="string"/>    </declare-styleable></resources>

main.xml:

<?xml version="1.0" encoding="utf-8"?><LinearLayout     xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:foo="http://schemas.android.com/apk/res/com.example"    android:orientation="vertical" android:layout_width="fill_parent"    android:layout_height="fill_parent">    <com.example.TextViewPlus        android:id="@+id/textViewPlus1"        android:layout_height="match_parent"        android:layout_width="match_parent"        android:text="@string/showingOffTheNewTypeface"        foo:customFont="saxmono.ttf">    </com.example.TextViewPlus></LinearLayout>

You would put "saxmono.ttf" in the assets folder.


Yes, you can :)

step 1: Create a folder and name it 'font' and put your .ttf inside it.Step one

step 2: Go to style.xml and do the following : - step two

step 3: Use the style tag anywhere in views(TextView, TabLayout,..etc.):-

Step three