2010-04-01 2 views
26

Je définis un style XML pour mon application Android. J'ai quelques fichiers TTF que je veux utiliser, comment puis-je définir la police pour utiliser ces fichiers comme la police par opposition au générique "sans", "serif" & "monospace". MerciDéfinir une police spécifique dans un styles.xml

Répondre

47

Vous ne pouvez utiliser des polices personnalisées via le code Java, pas par la mise en page XML ou styles/thèmes - désolé!

+0

Merci beaucoup Je vous en suis reconnaissant. – NickTFried

+0

@ SergiCastellsaguéMillán: Cette question était pour l'utilisation de polices TTF. La réponse que vous avez liée est pour tout ** mais ** les polices TTF. – CommonsWare

+1

Puisque c'est une vieille réponse; Savez-vous si cela a quelque chose de changé dans les versions ultérieures, @CommonsWare? Moi aussi, j'aimerais pouvoir changer les polices en les définissant dans un document ''. –

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'est-ce que monspace ici ??? Que faire si j'ai un fichier .ttf – sheetal

+1

https://en.wikipedia.org/wiki/Monospaced_font est le type de police –

+1

et si je veux utiliser 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/valeurs)

<?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> 

vous mettriez "saxmono.ttf" dans le dossier actifs.

0

Oui, vous pouvez :)

étape 1: Créez un dossier et nommez-le « police » et votre .ttf à l'intérieur. enter image description here

étape 2: Aller à style.xml et procédez comme suit: - enter image description here

étape 3: Utilisez la balise de style dans l'un objet de l'interface utilisateur: -

enter image description here

+0

Avant tout cela, d'abord, vous devez mettre à jour pour mettre à jour à la bibliothèque de soutien 26 voici un lien https://segunfamisa.com/posts/custom-fonts-with-android-support-library –

Questions connexes