2009-09-15 13 views
57

Chcę używać zewnętrznych czcionek w mojej aplikacji. Próbowałem dodać nowe fonts przy użyciu AssetManager, ale nie działa. Poniżej jest mój kod:Używanie zewnętrznych czcionek w Androidzie

Typeface face; 

face = Typeface.createFromAsset(getAssets(), "font.otf"); 

textview.setTypeface(face); 

ale jej nie widać tekst ...

Proszę mi pomóc z tym.

+1

..to być schludny można mieć czcionek w aktywa/folderu czcionek i dostępu Krój pisma twarzy; face = Typeface.createFromAsset (getAssets(), "fonts /" + "font.otf"); textview.setTypeface (twarz); –

Odpowiedz

63

AFAIK, Android nie obsługuje OpenType. Zamiast tego użyj czcionki TrueType.


UPDATE: Widocznie OpenType jest obecnie obsługiwany, przynajmniej w pewnym stopniu. Początkowo nie była obsługiwana, więc będziesz chciał dokładnie przetestować czcionkę w dowolnej wersji Androida, którą będzie obsługiwać twoja aplikacja.

+0

więc mówisz, że jestem we właściwym kierunku .. wystarczy użyć pliku ttf zamiast otf ??? – mudit

+2

Tak. Biorąc pod uwagę twój kod, musisz mieć swoją czcionkę w katalogu głównym katalogu/assets, ale poza tym powinno być dobrze z kompatybilną czcionką. – CommonsWare

+0

Komunikat o błędzie wskazuje na pewien problem komunikacyjny między emulatorem i adb lub Eclipse - nie ma nic wspólnego z czcionkami. Pobierz http://commonsware.com/Android/Android-src-2_1.zip, a znajdziesz projekt Androida, który pokazuje ładowanie czcionki TrueType. Zauważ też, że teraz system Android 1.6 pozwala ładować czcionki spoza pliku APK (np. Ten pobrany osobno). – CommonsWare

1

Miałem ten sam problem. Moja czcionka też nie działała na Androidzie, ale potrzebowałem jej do działania. Używając edytora czcionek, skopiowałem znaki z mojej czcionki do czcionki dołączonej do przykładu FontSampler z Android-src-2_1. Działało idealnie.

Chociaż przyznaję, że moja metoda była wątpliwa z punktu widzenia własności intelektualnej, nie wymyśliłem jej z użyciem oryginalnej czcionki, ponieważ wszystkie znaki zostały zastąpione, a wszystkie odniesienia do starej czcionki zastąpiono jako dobrze. Próbowałem "patrzeć" na sposób, w jaki zostały zdefiniowane dwie czcionki, ale dopasowanie wszystkich zmiennych fontów również nie działa. Tak więc w nedu użyłem szkieletu oryginalnej czcionki jako szablonu dla nowej czcionki.

9

Android obsługuje OTF (nie jestem pewien z której wersji SDK, ale na pewno działa z 1.6), przez jakiś czas używałem czcionki OTF maszyny do pisania, ale renderowanie nie było tak dokładne jak w przypadku wersji TTF I skończyło się używaniem (przez internetowy konwerter czcionek). Linia bazowa była wszędzie (niektóre litery były pełne o 2 piksele wyższe niż inne), a na telefonach LDPI takich jak HTC Wildfire problem jest znacznie powiększony ze względu na większe piksele.

12

Aby łatwo uzyskać dostęp do naszej czcionki, musimy połączyć ją z naszą aplikacją w taki sposób, aby nasz kod mógł ją później załadować. Aby to zrobić, należy utworzyć folder Czcionki w naszych aktywów bezpośrednich

może to być .xml

<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent"> 
<TextView 
    android:id="@+id/DefaultFontText" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:textSize="30sp" 
    android:text="Here is some text." /> 
<TextView 
    android:id="@+id/CustomFontText" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textSize="30sp" 
    android:text="Here is some text."> 
    </TextView> 

Write poniższy kod w swojej klasie .java

Typeface tf = Typeface.createFromAsset(getAssets(), 
      "fonts/BPreplay.otf"); 
    TextView tv = (TextView) findViewById(R.id.CustomFontText); 
    tv.setTypeface(tf); 
1

android obsługuje zarówno formaty otf i ttf, doświadczyłem obu z nich.

tv3 = (TextView)findViewById(R.id.tv1); 
    Typeface typeFace = Typeface.createFromAsset(getAssets(), "fonts/TRAJANPRO-BOLD.OTF"); 
    tv3.setTypeface(typeFace); 

jest to czynność, użyłem obu językach angielskim i lokalnych

1

Zastosowanie Fontinator to obsługują stoiska OTF i TTF Fonts

Jest to Android Biblioteka ułatwiają, aby użyć niestandardowej czcionki .

https://github.com/svendvd/Fontinator

+0

Jest całkiem niezły, ale zmienia ponad 1000 telewizorów na ich własne niestandardowe ... niezbyt poręczne –

-3

Można użyć prostego bibliotekę EasyFonts osób trzecich, aby ustawić różne niestandardowe czcionki do 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.

Zapewnia następujące kroje czcionek.

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

prostu:

TextView myTextView = (TextView)findViewById(R.id.myTextView); 
myTextView.setTypeface(EasyFonts.robotoThin(this)); 
Powiązane problemy