Fuentes personalizadas en Android
Ya he leído algunos artículos y he buscado en Google, pero no lo hice.
Mi problema es con respecto a la font-face.
- ¿Fuentes personalizadas que no funcionan en piruletas?
- Android Studio - Establecer fuentes personalizadas con el gestor de activos en fragmento
- Cambiar tamaño de fuente para un mensaje AlertDialog
- Reconocimiento de fuentes del dibujo a mano libre
- Roboto fuente para Android 4 +?
En Android, sólo hay 4 atributos en "android:typeface"
: Normal, Sans, Serif, Monospace.
Entonces, ¿qué debo hacer para usar "Verdana" en mi aplicación?
Por favor, sugiéreme una forma correcta de usar esta fuente en mi aplicación de Android.
- Fuente Kannada en Android ICS
- Fuentes TrueType en libGDX
- Las fuentes ttf personalizadas no se muestran correctamente en TextView en Android 4.4 KitKat
- ¿Por qué Punjabi (Lengua India) aparece como cajas en algunos dispositivos inteligentes?
- Cambiar la fuente del texto de la pestaña en la compatibilidad con el diseño de Android TabLayout
- Android, texto / fuente se procesa como cuadrados
- Activo de fuente no encontrado helvetica.ttf en lollipop
- Typeface.ITALIC no funciona en Galaxy Note 2
Este es un ejemplo simple … crea una carpeta en la raíz de tu proyecto llamada assets/fonts/
luego pega el archivo de fuente TTF (en este caso Verdana.ttf). A continuación, si desea aplicar esa fuente a, por ejemplo, un TextView
, haga lo siguiente:
import android.graphics.Typeface; public class FontSampler extends Activity { @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.main); TextView tv=(TextView)findViewById(R.id.custom); Typeface face=Typeface.createFromAsset(getAssets(), "fonts/Verdana.ttf"); tv.setTypeface(face); } }
Este ejemplo fue tomado del libro de ComonsWare (escrito por Mark Murphy). Puede descargar el ejemplo completo de GitHub .
Puede utilizar PixlUI en https://github.com/neopixl/PixlUI
Importar su .jar y usarlo en XML
<com.neopixl.pixlui.components.textview.TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_world" pixlui:typeface="GearedSlab.ttf" />
Puede utilizar la biblioteca de EasyFonts de terceros para establecer variedad de fuentes personalizadas en su TextView
. Al utilizar esta biblioteca, no debería preocuparse por descargar y agregar fuentes a la carpeta assets / fonts. También sobre la creación de objetos Typeface.
Esta biblioteca no proporciona Verdana Font cara.
Pero proporcione las siguientes caras de fuente. ¿Qué te gustaría usar?
- Roboto
- Droid Serif
- Robot droid
- Libertad
- Diversión Raiser
- Android Nation
- Aguacate Verde
- Reconocimiento
Simplemente:
TextView myTextView = (TextView)findViewById(R.id.myTextView); myTextView.setTypeface(EasyFonts.robotoThin(this));
Soy autor de esta biblioteca.
¡¡Bien!!
Esta pregunta es bastante antigua, pero todavía si alguien está buscando la respuesta (en 2015) sobre cómo aplicar la fuente personalizada a todas las vistas de texto a través de código xml ver directamente a continuación:
Primero :
Necesitamos agregar una fuente personalizada dentro de la carpeta de activos dentro del directorio de la aplicación:
.ttf o .otf ambos funcionan en caso de Android
Segundo:
Crear Clase CustomTextView que extiende TextView como a continuación:
public class CustomTextView extends TextView { public CustomTextView(Context context) { super(context); } public CustomTextView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } public CustomTextView(Context context, AttributeSet attrs) { super(context, attrs); } @Override public void setTypeface(Typeface tf) { super.setTypeface(FontCache.getFont(getContext(),"fonts/<font_name>")); } }
Tercero:
FontCache que se utiliza dentro del método setTypeface () de CustomTextView. El propósito es hacer la caché de fuentes básica usando HashMap:
public class FontCache { private static Map<String,Typeface> fontMap = new HashMap<String,Typeface>(); public static Typeface getFont(Context context,String fontname){ if(fontMap.containsKey(fontname)){ return fontMap.get(fontname); } else{ Typeface tf = Typeface.createFromAsset(context.getAssets(),fontname); fontMap.put(fontname,tf); return tf; } } }
Cuarto: [Paso final] Todo lo que hacemos ahora es usar CustomTextView directamente dentro de nuestro archivo xml donde sea necesario el texto personalizado textview:
<<package_name>.CustomTextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Custom Font Text" android:textSize ="18sp" android:textAppearance="?android:textAppearanceSmall" android:id="@+id/custom_txt" />
Lo sentimos, si esto ya ha sido publicado en algún lugar de SO. Sólo pensé en compartir si ayuda a alguien !!
Para cambiar la fuente (personalizada) de tu aplicación globalmente, echa un vistazo a Calligraphy
Simplemente añada Caligrafía a su gradle.build y añada el siguiente fragmento a su Application.onCreate()
:
CalligraphyConfig.initDefault(new CalligraphyConfig.Builder() .setDefaultFontPath("fonts/MyCustomFont.ttf") .setFontAttrId(R.attr.fontPath) .build() );
Y en cada actividad agregue lo siguiente:
@Override protected void attachBaseContext(Context newBase) { super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase)); }
Eso es todo lo que necesita hacer para cambiar la fuente globalmente en su aplicación. Echa un vistazo a los documentos para más detalles.
// My example show you how to change fonts into a normal textView or list view create a fonts folder into your assets dir of android and copy your custom font in that .. assets/fonts/monaco.ttf // Font path String fontPath = "fonts/monaco.ttf"; // Loading Font Face Typeface tf = Typeface.createFromAsset(getAssets(), fontPath); // CASE 1 : Inside your list view holder.name = (TextView) convertView .findViewById(R.id.textView_cityName); // set name of text in each row holder.name.setText(CitiesNames.get(position)); // set the type of font you want to set holder.name.setTypeface(tf); // CASE 2 : Inside your text view TextView tx = (TextView)findViewById(R.id.textview1); tx.setTypeface(tf); //vKj
TextView textView = (Textview) findViewById(R.id.mytext); Typeface face=Typeface.createFromAsset(getAssets(), "fonts/Verdana.ttf"); textView.setTypeFace(face);
- Diferencia entre MotionEvent.getRawX y MotionEvent.getX
- No se puede usar dex2jar en mi mac: permission denied