2010-07-08 11 views
38

Przeczytałem już niektóre artykuły i przeszukano w Google, ale nie udało mi się tego zrobić.Niestandardowe czcionki w Androidzie

Mój problem dotyczy czcionki.

W systemie Android istnieją tylko 4 atrybuty w "android:typeface": Normalny, Bezszeryfowy, Szeryfowy, Monospace.

Co muszę zrobić, aby użyć "Verdana" w mojej aplikacji?

Proszę, zasugeruj mi prawidłowy sposób korzystania z tej czcionki w mojej aplikacji Android.

+0

Sprawdź ten wpis: [http://stackoverflow.com/questions/2888508/how-to-change-the-font-on-text-view-in-android](http://stackoverflow.com/questions/2888508/how-to-change-the-font-on-the-text-view-in-android) – Praveen

+0

Sprawdź także to: http://stackoverflow.com/a/14558090/693752 – Snicolas

+0

http://stackoverflow.com/questions/9030204/how-to-use-custom-font-in-android-xml/9035924#9035924 – Vins

Odpowiedz

76

To jest prosty przykład ... Utwórz folder w katalogu głównym projektu o nazwie assets/fonts/, a następnie wklej plik czcionki TTF (w tym przypadku Verdana.ttf). Następnie, jeśli chcesz zastosować tę czcionkę, powiedzmy do TextView, wykonaj następujące czynności:

import android.graphics.Typeface; 

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

    TextView tv=(TextView)findViewById(R.id.custom); 
    Typeface face=Typeface.createFromAsset(getAssets(), 
              "fonts/Verdana.ttf"); 

    tv.setTypeface(face); 
    } 
} 

Przykład ten został zaczerpnięty z książki ComonsWare (napisany przez Mark Murphy). Możesz download the full example from GitHub.

+6

Czy istnieje sposób zastosowania tej opcji do wszystkich aplikacji tekstowych zamiast pojedynczych widoków tekstowych? –

+1

Czy można ustawić czcionkę dla formantu za pomocą układu xml? –

+0

Tak i nie. Nie możesz tego zrobić po wyjęciu z pudełka ... ale możesz rozszerzyć 'TextView', aby dodać taką funkcjonalność. – Cristian

4

Można użyć PixlUI na https://github.com/neopixl/PixlUI

importować ich .jar i używać go w XML

<com.neopixl.pixlui.components.textview.TextView 
    android:id="@+id/textView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/hello_world" 
    pixlui:typeface="GearedSlab.ttf" /> 
+0

Próbowałem twojej biblioteki, ale wygląda na to, że nie ma żadnego efektu dla Androida: textStyle = "pogrubienie", jeśli zmienię TextView na pixlui TextView. (v 1.0.5) – mrmoment

0
// My example show you how to change fonts into a normal textView or list view 

create a fonts folder into your assets dir of android and copy your custom font in that .. 
assets/fonts/monaco.ttf 

// Font path 
String fontPath = "fonts/monaco.ttf"; 

// Loading Font Face 
Typeface tf = Typeface.createFromAsset(getAssets(), fontPath); 

// CASE 1 : Inside your list view   
holder.name = (TextView) convertView 
       .findViewById(R.id.textView_cityName); 

// set name of text in each row 
holder.name.setText(CitiesNames.get(position)); 

// set the type of font you want to set 
holder.name.setTypeface(tf); 

// CASE 2 : Inside your text view 

TextView tx = (TextView)findViewById(R.id.textview1); 
tx.setTypeface(tf); 

//vKj 
-1
TextView textView = (Textview) findViewById(R.id.mytext); 
Typeface face=Typeface.createFromAsset(getAssets(), 
             "fonts/Verdana.ttf"); 
textView.setTypeFace(face); 
+0

Dlaczego powtórzyłeś kod/odpowiedź ponownie? –

2

Można użyć prostego bibliotekę EasyFonts osób trzecich, aby ustawić różne niestandardowe czcionki do twojego TextView. Korzystając z tej biblioteki, nie musisz się martwić o pobieranie i dodawanie czcionek do folderu assets/fonts. Również o tworzeniu obiektu czcionki.

Ta biblioteka nie udostępnia twarz Verdana czcionki.

Ale podaj następujące kroje czcionek. Które może chcesz użyć.

  • Roboto
  • Droid Serif
  • Droid Robot
  • Wolność
  • Fun Raiser
  • Android Nation
  • Zielona Avocado
  • Uznanie

Po prostu:

TextView myTextView = (TextView)findViewById(R.id.myTextView); 
myTextView.setTypeface(EasyFonts.robotoThin(this)); 

Jestem autorem tej biblioteki.

3

Cóż !!
To pytanie jest dość stary, ale nadal, jeśli ktoś szuka odpowiedzi (w 2015 roku), w jaki sposób zastosować niestandardową czcionkę wszystkich TextView pośrednictwem kodu xml bezpośrednio zobaczyć poniżej:

Pierwszy:
musimy aktywów wewnątrz folderu dodać niestandardowe czcionki wewnątrz aplikacji katalogu:
.ttf lub .OTF pracy zarówno w przypadku Androida

drugie:
Tworzenie klasy CustomTextView która rozciąga TextView jak poniżej:

public class CustomTextView extends TextView { 

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

public CustomTextView(Context context, AttributeSet attrs, int defStyleAttr) { 
    super(context, attrs, defStyleAttr); 
    } 

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

@Override 
public void setTypeface(Typeface tf) { 
    super.setTypeface(FontCache.getFont(getContext(),"fonts/<font_name>")); 
    } 
} 

trzecie:
klasa FontCache używany wewnątrz setTypeface CustomTextView za() method.Purpose jest zrobić podstawowe buforowania czcionek przy użyciu HashMap:

public class FontCache { 

private static Map<String,Typeface> fontMap = new HashMap<String,Typeface>(); 

public static Typeface getFont(Context context,String fontname){ 
    if(fontMap.containsKey(fontname)){ 
     return fontMap.get(fontname); 
     } 
    else{ 
     Typeface tf = Typeface.createFromAsset(context.getAssets(),fontname); 
     fontMap.put(fontname,tf); 
     return tf; 
     } 
    } 
} 

Po czwarte: [Ostatnim krokiem] Teraz wystarczy użyć CustomTextView bezpośrednio w naszym pliku xml wszędzie tam, gdzie wymagany jest niestandardowy widok czcionki:

<<package_name>.CustomTextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Custom Font Text" 
    android:textSize ="18sp" 
    android:textAppearance="?android:textAppearanceSmall" 
    android:id="@+id/custom_txt" 
    /> 

Przepraszam, jeśli to zostało już wysłane gdzieś na SO. Pomyślcie o tym, jeśli komuś pomaga!

1

Aby zmienić (niestandardowe) czcionkę aplikacji globalnie spojrzeć Calligraphy

Wystarczy dodać do swojej gradle.build Kaligrafia i dodaj następujący fragment do listy Application.onCreate():

CalligraphyConfig.initDefault(new CalligraphyConfig.Builder() 
         .setDefaultFontPath("fonts/MyCustomFont.ttf") 
         .setFontAttrId(R.attr.fontPath) 
         .build() 
     ); 

i w każdej aktywności dodaj:

@Override 
protected void attachBaseContext(Context newBase) { 
    super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase)); 
} 

To wszystko, co musisz zrobić, aby zmienić czcionkę na całym świecie w swojej aplikacji. Zajrzyj do dokumentów, by dowiedzieć się więcej.

Powiązane problemy