studio plain example español and android textview

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" />