2010-04-01 14 views
26

Estoy definiendo un estilo XML para mi aplicación de Android. Tengo algunos archivos TTF que quiero usar, ¿cómo puedo configurar el tipo de letra para usar esos archivos como la fuente en comparación con el genérico "sans", "serif" & "monoespacio". GraciasEstablecer fuente específica en un styles.xml

Respuesta

47

Solo puede usar fuentes personalizadas a través del código Java, no a través del diseño XML o estilos/temas - ¡lo siento!

+0

Muchas gracias Lo aprecio. – NickTFried

+0

@ SergiCastellsaguéMillán: Esta pregunta fue para usar fuentes TTF. La respuesta a la que se vinculó es para todo ** pero ** fuentes TTF. – CommonsWare

+1

Dado que esta es una respuesta anterior; ¿sabe si esto ha cambiado algo en versiones posteriores, @CommonsWare? A mí también me gustaría poder cambiar las fuentes definiéndolas en un documento ''. –

7
<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="CodeFont" parent="@android:style/TextAppearance.Medium"> 
     <item name="android:layout_width">fill_parent</item> 
     <item name="android:layout_height">wrap_content</item> 
     <item name="android:textColor">#00FF00</item> 
     <item name="android:typeface">monospace</item> 
    </style> 
</resources> 
+2

¿Qué es Monspace aquí? ¿Y si tengo un archivo .ttf? – sheetal

+1

https://en.wikipedia.org/wiki/Monospaced_font es el tipo de fuente –

+1

¿Qué ocurre si quiero usar sans-serif? – Senhor

16

TextViewPlus.java:

package com.example; 

import android.content.Context; 
import android.content.res.TypedArray; 
import android.graphics.Typeface; 
import android.util.AttributeSet; 
import android.util.Log; 
import android.widget.TextView; 

public class TextViewPlus extends TextView { 
    private static final String TAG = "TextView"; 

    public TextViewPlus(Context context) { 
     super(context); 
    } 

    public TextViewPlus(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     setCustomFont(context, attrs); 
    } 

    public TextViewPlus(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 
     setCustomFont(context, attrs); 
    } 

    private void setCustomFont(Context ctx, AttributeSet attrs) { 
     TypedArray a = ctx.obtainStyledAttributes(attrs, R.styleable.TextViewPlus); 
     String customFont = a.getString(R.styleable.TextViewPlus_customFont); 
     setCustomFont(ctx, customFont); 
     a.recycle(); 
    } 

    public boolean setCustomFont(Context ctx, String asset) { 
     Typeface tf = null; 
     try { 
     tf = Typeface.createFromAsset(ctx.getAssets(), asset); 
     } catch (Exception e) { 
      Log.e(TAG, "Could not get typeface: "+e.getMessage()); 
      return false; 
     } 

     setTypeface(tf); 
     return true; 
    } 

} 

attrs.xml: (en res/valores)

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <declare-styleable name="TextViewPlus"> 
     <attr name="customFont" format="string"/> 
    </declare-styleable> 
</resources> 

main.xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:foo="http://schemas.android.com/apk/res/com.example" 
    android:orientation="vertical" android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

    <com.example.TextViewPlus 
     android:id="@+id/textViewPlus1" 
     android:layout_height="match_parent" 
     android:layout_width="match_parent" 
     android:text="@string/showingOffTheNewTypeface" 
     foo:customFont="saxmono.ttf"> 
    </com.example.TextViewPlus> 
</LinearLayout> 

que pondría "saxmono.ttf" en el activos carpeta.

0

Sí, se puede :)

paso 1: Crear una carpeta y el nombre de 'fuente' y su .ttf en su interior. enter image description here

paso 2: Ir a style.xml y haga lo siguiente: - enter image description here

Paso 3: Utilice la etiqueta de estilo en la interfaz de usuario de cualquier objeto: -

enter image description here

+0

Antes de todo esto, primero, necesita actualizar para actualizar a la biblioteca de soporte 26 aquí hay un enlace https://segunfamisa.com/posts/custom-fonts-with-android-support-library –

Cuestiones relacionadas