plain - textview android studio español
¿Cómo hacer un TextView personalizado? (3)
Estoy tratando de crear una vista de texto personalizada que tenga la fuente establecida desde una ruta determinada. Por favor, dame un ejemplo y cómo puedo hacer eso con menos código:
<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" />
Crear una vista personalizada para Textview
. Paso 1: attrs.xml
la entrada en el archivo attrs.xml
y brinde una opción para seleccionar Fuente como lista en TextView
personalizado.
<declare-styleable name="CustomFontTextView">
<attr name="fontName"/>
</declare-styleable>
Paso 2: crea la entrada enum con la lista de fuentes y asigna valores únicos
<attr name="fontName" format="enum">
<enum name="Roboto_Bold" value="1" />
<enum name="Roboto_Italic" value="2" />
<enum name="Roboto_Light" value="3" />
<enum name="Roboto_Medium" value="4" />
<enum name="Roboto_Regular" value="5" />
<enum name="Roboto_Thin" value="6" />
</attr>
Paso 3: hacer entradas de todas las fuentes en strings.xml
<string name="Roboto_Bold">Roboto-Bold</string>
<string name="Roboto_Medium">Roboto-Medium</string>
<string name="Roboto_Light">Roboto-Light</string>
<string name="Roboto_Regular">Roboto-Regular</string>
<string name="Roboto_Thin">Roboto-Thin</string>
<string name="Roboto_Italic">Roboto-Italic</string>
Paso 4: crea una carpeta de activos y copia toda la fuente necesaria que quieras poner en la carpeta de fuentes
Paso 5: TextView
una clase que extienda 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();
}
}
Puede usar esta clase personalizada de esta manera. .. usa tu 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"/>
La clase personalizada a continuación puede ayudarlo a personalizar la configuración de la fuente requerida en TextView
por lo que debe colocar algún archivo .ttf en los recursos y darle esta ruta en TextView
personalizado.
public class TextViewBoldFont extends TextView {
public TextViewBoldFont(Context context, AttributeSet attrs) {
super(context, attrs);
String fontPath = "GOTHICB.TTF";
Typeface fontsStyle = Typeface.createFromAsset(context.getAssets(), fontPath);
this.setTypeface(fontsStyle,Typeface.BOLD);
}
public TextViewBoldFont(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
String fontPath = "GOTHICB.TTF";
Typeface fontsStyle = Typeface.createFromAsset(context.getAssets(), fontPath);
this.setTypeface(fontsStyle,Typeface.BOLD);
}
public TextViewBoldFont(Context context) {
super(context);
String fontPath = "GOTHICB.TTF";
Typeface fontsStyle = Typeface.createFromAsset(context.getAssets(), fontPath);
this.setTypeface(fontsStyle,Typeface.BOLD);
}
}
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);
}
}
y en 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" />