2014-05-11 3 views
0

J'essaie de définir le texte de texte dans une police personnalisée.Android - l'application de polices personnalisées dans textview ne fonctionne pas

Afin de le faire, je l'ai fait les prochaines étapes -

1) La mise en page Xml est à la recherche comme ceci:

  <TextView 
       android:id="@+id/textView_window_title" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="center_vertical" 
       android:text="Profile" 
       android:textColor="#505A62" /> 

2) J'ai créé un dossier fonts dans la assets et placez 3 fichiers de polices différentes. Tous les trois sont des types de fichiers .ttf. De plus, le nom de chaque fichier de police et le type sont écrits dans une petite lettre, comme si - cr.ttf

3) A la classe des fragments que j'ai utilisé le code suivant -

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 

      View v = inflater.inflate(R.layout.gd_menu_layout, container, false); 

      Typeface tf = Typeface.createFromAsset(getActivity().getAssets(), 
       "fonts/cr.ttf"); 
      titleWindow = (TextView) v.findViewById(R.id.textView_window_title); 
      titleWindow.setTypeface(tf); 


      return v; 

     } 

Je l'ai essayé avec 3 fichiers de polices différents mais aucun d'entre eux ne change la police de textview.

Des idées pour lesquelles ce code ne fonctionne pas?

Merci pour tout type d'aide

+0

Vous pouvez ne voir aucun changement dans l'EDI lorsque ce code est écrit, mais lorsque vous générez l'application, vous verrez la police changer lorsque vous l'exécutez dans l'émulateur. –

+0

Eh bien, j'ai essayé de l'exécuter sur un vrai périphérique - ne pouvait voir aucun changement, c'est pourquoi j'ai dit que ce code ne fonctionne pas pour moi – 4this

+0

J'ai déménagé le fichier de polices du dossier fonts pour utiliser la chaîne - toujours pas du tout – 4this

Répondre

1
String fontPath = "fonts/cr.ttf"; 
Typeface tf = Typeface.createFromAsset(this.getAssets(), fontPath); 
titleWindow.setTypeface(tf); 

essayer

+0

Eh bien merci d'essayer d'aider, mais cela ne fonctionne pas pour moi. – 4this

+0

ckeck où votre nom de dossier et votre nom de fichier sont identiques à ceux que vous avez mentionnés – Meghna

+0

Oui, ils l'ont été, je l'ai vérifié deux fois avant d'avoir posté ce questoin ici – 4this

0

Définissez votre polices de caractères sur toutes les vues que vous utilisez, essayez mes codes ...

private EditText etComment2; 
private TextView tvQuestionText1; 
private TextView tvQuestionText2; 
private Button btn1; 


    in you onCreate() 

    etComment3 = (EditText)findViewById(R.id.etComment3); 
    tvQuestionText1 = (TextView)findViewById(R.id.tvQuestionText1); 
    tvQuestionText2 = (TextView)findViewById(R.id.tvQuestionText2); 
    btn1 = (Button)findViewById(R.id.btn1); 

créer une matrice de toutes les vues vos ici-

View allViews[] = 
     { 
      etComment2, 
      tvQuestionText1, 
      tvQuestionText2, 
      btn1 
     }; 

passe cet objet vue ici- AppConstant est notre classe pour gérer toutes les méthodes statiques

AppConstant.setTypeFace(allViews); 

Maintenant, voici notre classe constante avec la méthode TypeFace

public static void setTypeFace(View []views) 
{ 

    for(int i=0 ; i<views.length; i++) 
    { 
     Typeface tf = Typeface.createFromAsset(views[i].getContext().getAssets(), "fonts/SourceSansPro-Semibold.ttf"); 
     if(views[i] instanceof TextView) 
     { 
      ((TextView)views[i]).setTypeface(tf); 
     } 
     else if(views[i] instanceof Button) 
     { 
      ((Button)views[i]).setTypeface(tf); 
     } 
     else if(views[i] instanceof EditText) 
     { 
      ((EditText)views[i]).setTypeface(tf); 
     } 
    } 
0
// Declare styleable in attrs.xml 
/res/values/attrs.xml 

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

Create a layout in layout folder 

    /res/layout/activity_main.xml 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:customfontdemo="http://schemas.android.com/apk/res-auto" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical" 
     android:gravity="center"> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textSize="24sp" 
      android:padding="12dp" 
      android:text="Standard Android Font" /> 

     <com.authorwjf.customfontdemo.MyTextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textSize="32sp" 
      android:padding="12dp" 
      customfontdemo:fontName="pipe_dream.ttf" 
      android:text="Custom Android Font" /> 

    </LinearLayout> 

// maintenant Créez votre commande Textview

/src/MyTextView.java

package com.deepak.utilsview; 

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

public class MyTextView extends TextView { 

    public MyTextView(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 
     init(attrs); 
    } 

    public MyTextView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     init(attrs); 

    } 

    public MyTextView(Context context) { 
     super(context); 
     init(null); 
    } 

    private void init(AttributeSet attrs) { 
     if (attrs!=null) { 
      TypedArray a = getContext().obtainStyledAttributes(attrs, R.styleable.MyTextView); 
      String fontName = a.getString(R.styleable.MyTextView_fontName); 
      if (fontName!=null) { 
       Typeface myTypeface = Typeface.createFromAsset(getContext().getAssets(), "fonts/"+fontName); 
       setTypeface(myTypeface); 
      } 
      a.recycle(); 
     } 
    } 

} 

// voir maintenant les polices de votre activité après l'activité en cours d'exécution

/src/MainActivity.java package com.authorwjf.customfontdemo;

import android.os.Bundle; 
import android.app.Activity; 

public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
    } 

} 
Questions connexes