2012-01-27 5 views
24

Jak mogę użyć niestandardowej czcionki, która została dodana w folderze zasobów w moim pliku xml? Wiem, że możemy użyć metody setTypeface() w java, ale musimy to robić wszędzie, gdzie używamy tego TextView. Czy istnieje lepszy sposób?Jak używać niestandardowej czcionki w Androidzie xml?

+0

I zostały zaktualizowane moją odpowiedź. Proszę usunąć -ve z tej odpowiedzi. –

+0

Wypróbuj ten samouczek [http://www.barebonescoder.com/2010/05/android-development-using-custom-fonts/](http://www.barebonescoder.com/2010/05/android-development-using -custom-fonts /) Myślę, że to pomaga – Ajay

+0

Witam proszę odnieść ten post . problem z tą samą naturą został omówiony i tam udzielono odpowiedzi. – Wajeeh

Odpowiedz

58

Najlepszym sposobem znalezienia przez Google jest - Powiedz, czy chcesz użyć w TextView, to musimy rozszerzyć Textview i musimy ustawić czcionkę, że później możemy użyć naszego dostosowanego Textview w naszym xml. Pokażę rozszerzony widok tekstowy poniżej

Wywołujemy metodę init(), aby ustawić czcionkę w każdym z modeli. Później musimy użyć tego w naszym pliku main.xml, jak pokazano poniżej.

<com.vins.test.MyTextView 
    android:id="@+id/txt" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:gravity="center" 
    android:layout_weight="1" 
    android:text="This is a text view with the font u had set in MyTextView class " 
    android:textSize="30dip" 
    android:textColor="#ff0000" 
    > 

Aktualizacja:

Należy pamiętać o wycieku pamięci w pre-4.0 Androida jak wspomniano przez pandre.

+0

@vins - co jeśli użytkownik stwierdza również "android: textStyle =" pogrubienie "'? Czy tekst rzeczywiście będzie pogrubiony? –

+0

@kilaka Tak, powinno się odwrócić. – Vins

+1

@vins - dzięki. Czy to oznacza, że ​​plik ttf zawiera wszystkie podtypy czcionki - pogrubienie, kursywę itp. I ich kombinacje? –

2

Umieść plik czcionki w asset\fonts\fontname

zdefiniować trzy TextView w pliku xml następnie umieścić ten kod w swojej klasie działalność:

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

     // Font path 
     String fontPath = "fonts/DS-DIGIT.TTF"; 
     String fontPath1 = "fonts/Face Your Fears.ttf"; 
     String fontPath2 = "fonts/HelveticaNeue-Bold_0.otf"; 

     // text view label 
     TextView txtGhost = (TextView) findViewById(R.id.ghost); 
     TextView txtGhost1 = (TextView) findViewById(R.id.ghost1); 
     TextView txtGhost2 = (TextView) findViewById(R.id.ghost2); 

     // Loading Font Face 
     Typeface tf = Typeface.createFromAsset(getAssets(), fontPath); 
     Typeface tf1 = Typeface.createFromAsset(getAssets(), fontPath1); 
     Typeface tf2 = Typeface.createFromAsset(getAssets(), fontPath2); 

     // Applying font 
     txtGhost.setTypeface(tf); 
     txtGhost1.setTypeface(tf1); 
     txtGhost2.setTypeface(tf2); 
    } 
} 
+13

Hej, to jest normalny sposób ustawienia czcionki, pytanie dotyczyło domyślnie używania niestandardowej czcionki w XML. – Vins