3
Typeface fontRobo = Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-Black.ttf"); viewTotalValue.setText(total.toString()); 
3
  • 2
    Unfortunately this is not possible Commented Mar 27, 2014 at 13:56
  • possible duplicate of Accessing a font under assets folder from XML file in Android Commented Mar 27, 2014 at 14:00
  • 1
    If you dont want to do this to every TextView you can create class that extends TextView and set your Typeface in there. Then you can use that class in your xml files like com.your.customview.package.CustomFontTextView. Commented Mar 27, 2014 at 14:00

3 Answers 3

19

You could create your own TextView by overriding the TextView like this:

public class MyTextView extends TextView { public MyTextView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); setType(context); } public MyTextView(Context context, AttributeSet attrs) { super(context, attrs); setType(context); } public MyTextView(Context context) { super(context); setType(context); } private void setType(Context context){ this.setTypeface(Typeface.createFromAsset(context.getAssets(), "foo.ttf")); this.setShadowLayer(1.5f, 5, 5, getContext().getResources().getColor(R.color.black_shadow)); } } 

And use it like this:

<com.your.project.package.MyTextView android:id="@+id/oppinfo_mtv_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom" android:text="Player 1" /> 
Sign up to request clarification or add additional context in comments.

2 Comments

Show an example to him how to use it in xml file too :)
You were TOO fast! Nice answer
3

You could create a custom class that extends TextView, let's say FontTextView.

Define a special string attribute for that class, let's say "font".

Then, in your FontTextView constructor based on the value of the font attribute, choose the appropriate Typeface from your assets.

See:

Comments

3

Extending TextView just for setting font looks so expensive and not good. The most clear way is to use Android Data-Binding Framework and BindingAdapter:

@BindingAdapter("bind:font") public static void setTypeface(TextView textView, int index) { Typeface myTypeface = //retrieve typeface from cache, based on some font index textView.setTypeface(myTypeface); } 

declaration in xml:

<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" app:font="@{R.attr.Proxima_Nova_Regular}" /> 

attrs.xml:

<attr name="Proxima_Nova_Regular"/> <attr name="Proxima_Nova_Black"/> <attr name="Proxima_Nova_Bold"/> 

or use resources integers same way

In your cache/creator helper determine dependencies between R.attr.Your Font and instance of typeface.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.