I'm trying to make a custom text view that has the font set from a given path. Please provide me any example and how I can make that with less code:
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/accountInfoText"
android:textColor="#727272"
android:textSize="18dp" />
String a = tv. getText(). toString(); int A = Integer. parseInt(a);
import android.content.Context; import android.graphics.Canvas; import android.graphics.Typeface; import android.util.AttributeSet; import android.widget.TextView; public class FontTextView extends TextView { public FontTextView(Context context) { super(context); Typeface face=Typeface.createFromAsset(context.getAssets(), "Helvetica_Neue.ttf"); this.setTypeface(face); } public FontTextView(Context context, AttributeSet attrs) { super(context, attrs); Typeface face=Typeface.createFromAsset(context.getAssets(), "Helvetica_Neue.ttf"); this.setTypeface(face); } public FontTextView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); Typeface face=Typeface.createFromAsset(context.getAssets(), "Helvetica_Neue.ttf"); this.setTypeface(face); } protected void onDraw (Canvas canvas) { super.onDraw(canvas); } }
and in xml:
<com.util.FontTextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/accountInfoText" android:textColor="#727272" android:textSize="18dp" />
Create a Custom View for Textview
.
Make the entry in the attrs.xml
file and give an option to select Font as a list in custom TextView
.
Create the enum entry with a list of fonts and assign unique values
Make entries of all fonts in strings.xml
Roboto-Bold Roboto-Medium Roboto-Light Roboto-Regular Roboto-Thin Roboto-Italic
Create an asset folder and copy all the necessary font you want to put in the font folder
Create a class extending TextView
import android.content.Context; import android.content.res.TypedArray; import android.graphics.Typeface; import android.util.AttributeSet; import android.widget.TextView; /** * Created by ANKIT */ public class CustomFontTextView extends TextView { String customFont; public CustomFontTextView(Context context, AttributeSet attrs) { super(context, attrs); style(context, attrs); } public CustomFontTextView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); style(context, attrs); } private void style(Context context, AttributeSet attrs) { TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.CustomFontTextView); int cf = a.getInteger(R.styleable.CustomFontTextView_fontName, 0); int fontName = 0; switch (cf) { case 1: fontName = R.string.Roboto_Bold; break; case 2: fontName = R.string.Roboto_Italic; break; case 3: fontName = R.string.Roboto_Light; break; case 4: fontName = R.string.Roboto_Medium; break; case 5: fontName = R.string.Roboto_Regular; break; case 6: fontName = R.string.Roboto_Thin; break; default: fontName = R.string.Roboto_Regular; break; } customFont = getResources().getString(fontName); Typeface tf = Typeface.createFromAsset(context.getAssets(), "font/" + customFont + ".ttf"); setTypeface(tf); a.recycle(); } }
You can use this custom class this way. .. use your packageName.ClassName
<ankit.com.customui.CustomFontTextView android:layout_width="match_parent" android:text="Hello World Ankit" android:textSize="16sp" app:fontName="Roboto_Medium" android:layout_height="wrap_content"/>
add below styleable in res/values/attrs.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="CustomFontTextView"> <attr name="fontName" format="string" /> </declare-styleable> </resources>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With