2013-05-08 6 views
0

Une de mes activités d'application comprennent de nombreux textview je veux définir plusieurs police personnalisée pour cette textviews,multiples polices personnalisées pour plusieurs textview

J'ai essayé le code ci-dessous, mais il ne fonctionne pas à personnaliser textview,

toute aide sera appréciée

public class Text extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     TextView tv2=(TextView)findViewById(R.id.text2); 
     tv2.setText(Html.fromHtml(getString(R.string.text_2))); 

     TextView tv3=(TextView)findViewById(R.id.text3); 
     tv3.setText(Html.fromHtml(getString(R.string.text_3))); 

     TextView tv4=(TextView)findViewById(R.id.text4); 
     tv4.setText(Html.fromHtml(getString(R.string.text_4))); 

     TextView tv5=(TextView)findViewById(R.id.text5); 
     tv5.setText(Html.fromHtml(getString(R.string.text_5))); 
    } 


    class MyTextView extends TextView { 
     private String TextView; 

     public MyTextView(Context context,int string) { 
      super(context); 
     } 

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

     public void setTypeface(Typeface tf, int string) { 
      if (TextView == "tv2,tv4") { 
       super.setTypeface(Typeface.createFromAsset(getContext().getAssets(), 
        "BFantezy.ttf")); 
      } 
      else if (TextView == "tv3,tv5") { 
       super.setTypeface(Typeface.createFromAsset(getContext().getAssets(), 
        "RoseNewB.ttf")); 
      } 
     } 
    } 
} 

main.xml:

<?xml version="1.0" encoding="utf-8"?> 
    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"> 

    <LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical"> 

     <TextView 
      android:id="@+id/text2" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:textSize="25sp"/> 

     <View 
     android:layout_width="fill_parent" 
     android:layout_height="2dp"/> 


     <TextView 
      android:id="@+id/text3" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:textSize="25sp"/> 

     <View 
     android:layout_width="fill_parent" 
     android:layout_height="2dp"/> 

     <TextView 
      android:id="@+id/text4" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content"    
      android:textSize="25sp"/> 

     <View 
     android:layout_width="fill_parent" 
     android:layout_height="2dp"/> 

     <TextView 
      android:id="@+id/text5" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content"    
      android:textSize="25sp"/> 

    </LinearLayout> 
</ScrollView> 
+2

if (TextView == "tv2, tv4") ... qu'est-ce que c'est !! – stinepike

+0

où utilisez-vous MyTextView vous venez de définir cette classe. – Raghunandan

+3

Je pense que nommer un 'Text'' String' est l'une des pires atrocités de dénomination que j'ai vues depuis longtemps. – kcoppock

Répondre

0

Vous comparez dans un mauvais sens .. Pour ce faire, au lieu

if (getId() == R.id.text2)          
      super.setTypeface(Typeface.createFromAsset(getContext().getAssets(), 
       "BFantezy.ttf")); 

et créez votre textView en utilisant MyTextView.

Et comme ceci, comparez tous.

+0

mon cher s'il vous plaît comment puis-je inclure la police de caractères et créer textview dans une méthode – androidqq6

+0

dans settypface méthode de texte personnalisé utiliser la comparaison que j'ai écrit dans la réponse .. Et créer textview utilisant le textview personnalisé pas le textview normal – stinepike

+0

qui signifient: TextView tv4 = (TextView) findViewById (R.id.text4); tv4.setText (Html.fromHtml (getString (R.string.text_4))); super.setTypeface (Typeface.createFromAsset (getContext(). GetAssets(), "BFantezy.ttf")); – androidqq6

0

Vous créez le même type de caractères chaque fois que vous le définissez.

super.setTypeface(Typeface.createFromAsset(getContext().getAssets(), "BFantezy.ttf")); 

Il suffit de le créer une fois et de le réutiliser encore et encore. Cet appel est lourd et le faire 40 fois augmentera sûrement le temps de chargement.

public class Text extends Activity {  
    /** Called when the activity is first created. */ 
    private Static Typeface bf = Typeface.createFromAsset(getContext().getAssets(), 
      "BFantezy.ttf"); 
    private Static Typeface rn = Typeface.createFromAsset(getContext().getAssets(), 
      "RoseNewB.ttf") 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     TextView tv2=(TextView)findViewById(R.id.text2); 
     tv2.setText(Html.fromHtml(getString(R.string.text_2))); 
     tv2.setTypeface(bf); 

     TextView tv3=(TextView)findViewById(R.id.text3); 
     tv3.setText(Html.fromHtml(getString(R.string.text_3))); 
     tv3.setTypeface(rn); 

     TextView tv4=(TextView)findViewById(R.id.text4); 
     tv4.setText(Html.fromHtml(getString(R.string.text_4))); 
     tv4.setTypeface(bf); 

     TextView tv5=(TextView)findViewById(R.id.text5); 
     tv5.setText(Html.fromHtml(getString(R.string.text_5)));} 
     tv5.setTypeface(rn); 
    ... 

Personnalisé TextView est une surdimension à cet effet. Vous pouvez supprimer le code ci-dessous.

class MyTextView extends TextView {  
    private String TextView; 
    private Static Typeface bf = Typeface.createFromAsset(getContext().getAssets(), 
      "BFantezy.ttf"); 
    private Static Typeface rn = Typeface.createFromAsset(getContext().getAssets(), 
      "RoseNewB.ttf") 

    public MyTextView(Context context,int string) { 
     super(context); 
     updateTypeface(); 
    } 

    public MyTextView(Context context) {  
     super(context);  
     updateTypeface(); 
    } 

    private void updateTypeface() { 
     if (getId() == R.id.text2 || getId() == R.id.text4) {           
      super.setTypeface(bf);  
     } 
     else if (getId() == R.id.text3 || getId() == R.id.text5) { 
      super.setTypeface(rn); 
     } 
    } 

} 

EDIT: code mis à jour. Mise à jour de la police de caractères automatiquement.

+0

il ne change pas de police – androidqq6

+0

Mis à jour le code pour définir la police de caractères automatiquement –

+0

le même ne change pas de police – androidqq6

Questions connexes