Po pierwsze, domyślną wartością nie jest Arial. Domyślnie jest to Droid Sans.
Po drugie, aby zmienić na inną wbudowaną czcionkę, użyj android:typefacew układzie XML lub setTypeface()w Javie.
Po trzecie, w systemie Android nie ma czcionki Helvetica. Wbudowane opcje to Droid Sans ( sans), Droid Sans Mono ( monospace) i Droid Serif ( serif). Chociaż możesz łączyć własne czcionki z aplikacją i używać ich za pośrednictwem setTypeface(), pamiętaj, że pliki czcionek są duże i, w niektórych przypadkach, wymagają umów licencyjnych (np. Helvetica, czcionka Linotype ).
EDYTOWAĆ
Język projektowania Androida opiera się na tradycyjnych narzędziach typograficznych, takich jak skala, przestrzeń, rytm i wyrównanie względem leżącej poniżej siatki. Pomyślne wdrożenie tych narzędzi jest niezbędne, aby pomóc użytkownikom szybko zrozumieć ekran informacji. Aby wesprzeć takie wykorzystanie typografii, Ice Cream Sandwich wprowadził nową rodzinę typów o nazwie Roboto, stworzoną specjalnie pod kątem wymagań interfejsu użytkownika i ekranów o wysokiej rozdzielczości.
Obecna struktura TextView oferuje Roboto w cienkich, lekkich, regularnych i odważnych wzorach, a także kursywą dla każdej wagi. Ramy oferują również wariant Roboto Condensed w odważnikach regularnych i odważnych, a także kursywą dla każdej masy.
Po ICS, Android zawiera styl czcionek Roboto, Czytaj więcej Roboto
EDYCJA 2
Wraz z pojawieniem się biblioteki pomocy technicznej 26 system Android domyślnie obsługuje niestandardowe czcionki. Możesz wstawiać nowe czcionki w res / fonts, które można ustawić na TextViews indywidualnie, zarówno w formacie XML, jak i programowo. Domyślną czcionką dla całej aplikacji można także zmienić poprzez określenie to styles.xml Dokumentacja dewelopera android ma jasnych wskazówek na ten temat tutaj
Ustawienie kroju pisma przy użyciu kodu Java jest trudne ze względu na wiele wierszy. Utworzyłem bibliotekę, aby ustawić niestandardowe czcionki. Wykorzystanie biblioteki można znaleźć w tej odpowiedzi stackoverflow.com/a/42001474/4446392
Chathura Jayanath
254
Najpierw pobierz .ttfplik potrzebnej czcionki ( arial.ttf). Umieść go w assets folderze. (Wewnątrz folderu zasobów utwórz nowy folder o nazwie czcionki i umieść go w nim.) Użyj następującego kodu, aby zastosować czcionkę do TextView:
Typeface type =Typeface.createFromAsset(getAssets(),"fonts/arial.ttf");
textView.setTypeface(type);
Możesz stworzyć klasę statyczną, która będzie zawierać wszystkie czcionki. W ten sposób nie będziesz tworzyć czcionki wiele razy, co może mieć negatywny wpływ na wydajność . Upewnij się tylko, że utworzysz podfolder o nazwie „ czcionki ” w folderze „ zasoby ”.
Zrób coś takiego:
publicclassCustomFontsLoader{publicstaticfinalint FONT_NAME_1 =0;publicstaticfinalint FONT_NAME_2 =1;publicstaticfinalint FONT_NAME_3 =2;privatestaticfinalint NUM_OF_CUSTOM_FONTS =3;privatestaticboolean fontsLoaded =false;privatestaticTypeface[] fonts =newTypeface[3];privatestaticString[] fontPath ={"fonts/FONT_NAME_1.ttf","fonts/FONT_NAME_2.ttf","fonts/FONT_NAME_3.ttf"};/**
* Returns a loaded custom font based on it's identifier.
*
* @param context - the current context
* @param fontIdentifier = the identifier of the requested font
*
* @return Typeface object of the requested font.
*/publicstaticTypeface getTypeface(Context context,int fontIdentifier){if(!fontsLoaded){
loadFonts(context);}return fonts[fontIdentifier];}privatestaticvoid loadFonts(Context context){for(int i =0; i < NUM_OF_CUSTOM_FONTS; i++){
fonts[i]=Typeface.createFromAsset(context.getAssets(), fontPath[i]);}
fontsLoaded =true;}}
W ten sposób możesz pobrać czcionkę z dowolnego miejsca w aplikacji.
Super koleś! To jest piękno OOP. Świetna robota! :)
Joshua Michael Wagoner
Jak korzystać z tej klasy?
Jack
Musisz umieścić ten kod w swoim projekcie, dostosować go do czcionek, a następnie użyć metody statycznej getTypeface (..) z dowolnego miejsca w aplikacji.
Daniel L.,
Użyłem podobnego rozwiązania, ale dodałem buforowanie w celu zwiększenia wydajności ... czy w każdym razie napotkałeś sytuację, w której czcionka działa na niektórych telefonach, a na innych nie?
Dlaczego ta odpowiedź ma tylko 1 głos w górę, a ta powyżej ma 15? Co sprawia, że ten drugi jest lepszy? Wydaje mi się, że ten jest bardziej prosty przy użyciu zasady singletonu ...?
Koen Demonie
Właśnie zobaczyłem, że masz publicznego konstruktora, ustawię go jako prywatny, ponieważ nie potrzebujesz do niego dostępu. W każdym razie używasz wewnętrznych zmiennych czcionek ...
Koen Demonie
Absolutnie powinien być prywatny konstruktor. Dobrze zauważony :) Będzie edytować!
Chris Aitchison
12
Najlepszą praktyką jest korzystanie z Biblioteki obsługi systemu Android w wersji 26.0.0 lub nowszej.
KROK 1: dodaj plik czcionki
W folderze res utwórz nowy słownik zasobów czcionek
Dodaj plik czcionek ( .ttf , .orf )
Na przykład, gdy plik czcionek będzie helvetica_neue.ttf, który wygeneruje R.font.helvetica_neue
KROK 2: utwórz rodzinę czcionek
W folderze czcionek dodaj nowy plik zasobów
Załącz każdy plik czcionki, styl i atrybut wagi w elemencie.
Jest trochę stary, ale nieco poprawiłem klasę CustomFontLoader i chciałem się nim podzielić, aby był pomocny. Po prostu utwórz nową klasę za pomocą tego kodu.
następnie utwórz katalog o nazwie „font” w folderze res
umieść pliki czcionek (ttf) w tym katalogu czcionek, pamiętaj o konwencjach nazewnictwa [nazwa nie powinna zawierać żadnych znaków specjalnych, wielkich liter ani spacji ani tabulatorów]
Następnie odwołaj się do tej czcionki z xml w ten sposób
Czy potrzebujesz utworzyć instancję tej klasy w MainActivity? Ponieważ to nic dla mnie nie zmienia.
Tobias Mayr
1
Android wykorzystuje czcionkę Roboto, która jest naprawdę ładnie wyglądająca, z kilkoma różnymi grubościami (zwykła, lekka, cienka, zagęszczona), które świetnie wyglądają na ekranach o wysokiej gęstości.
Sprawdź poniższy link, aby sprawdzić czcionki Roboto:
Wracając do pytania, jeśli chcesz zmienić czcionkę dla wszystkich TextView / Button w swojej aplikacji , spróbuj dodać poniższy kod do pliku styles.xml, aby użyć czcionki Roboto-light :
<!-- Base application theme. --><stylename="AppTheme"parent="Theme.AppCompat.Light.DarkActionBar"><!-- Customize your theme here.-->......<item name="android:buttonStyle">@style/MyButton</item><item name="android:textViewStyle">@style/MyTextView</item></style><stylename="MyButton"parent="@style/Widget.AppCompat.Button"><item name="android:textAllCaps">false</item><item name="android:fontFamily">sans-serif-light</item></style><stylename="MyTextView"parent="@style/TextAppearance.AppCompat"><item name="android:fontFamily">sans-serif-light</item></style>
I nie zapomnij użyć „AppTheme” w pliku AndroidManifest.xml
Odpowiedzi:
Po pierwsze, domyślną wartością nie jest Arial. Domyślnie jest to Droid Sans.
Po drugie, aby zmienić na inną wbudowaną czcionkę, użyj
android:typeface
w układzie XML lubsetTypeface()
w Javie.Po trzecie, w systemie Android nie ma czcionki Helvetica. Wbudowane opcje to Droid Sans (
sans
), Droid Sans Mono (monospace
) i Droid Serif (serif
). Chociaż możesz łączyć własne czcionki z aplikacją i używać ich za pośrednictwemsetTypeface()
, pamiętaj, że pliki czcionek są duże i, w niektórych przypadkach, wymagają umów licencyjnych (np. Helvetica, czcionka Linotype ).EDYTOWAĆ
Po ICS, Android zawiera styl czcionek Roboto, Czytaj więcej Roboto
EDYCJA 2
źródło
Najpierw pobierz
.ttf
plik potrzebnej czcionki (arial.ttf
). Umieść go wassets
folderze. (Wewnątrz folderu zasobów utwórz nowy folder o nazwie czcionki i umieść go w nim.) Użyj następującego kodu, aby zastosować czcionkę doTextView
:źródło
src/main/assets/fonts/
.źródło
Możesz stworzyć klasę statyczną, która będzie zawierać wszystkie czcionki. W ten sposób nie będziesz tworzyć czcionki wiele razy, co może mieć negatywny wpływ na wydajność . Upewnij się tylko, że utworzysz podfolder o nazwie „ czcionki ” w folderze „ zasoby ”.
Zrób coś takiego:
W ten sposób możesz pobrać czcionkę z dowolnego miejsca w aplikacji.
źródło
Najlepsza praktyka w historii
TextViewPlus.java:
attrs.xml: (Gdzie umieścić res / wartości )
Jak używać:
Mam nadzieję, że to ci pomoże.
źródło
Odpowiedzi powyżej są poprawne. Upewnij się, że utworzysz podfolder o nazwie „czcionki” w folderze „zasoby”, jeśli używasz tego fragmentu kodu.
źródło
Kolejny sposób na konsolidację tworzenia czcionek ...
A następnie użyć w swojej działalności ...
Pamiętaj, ten podwójnie sprawdzony idiom blokujący z polem lotnym działa poprawnie tylko z modelem pamięci używanym w Javie 1.5+.
źródło
Najlepszą praktyką jest korzystanie z Biblioteki obsługi systemu Android w wersji 26.0.0 lub nowszej.
KROK 1: dodaj plik czcionki
Na przykład, gdy plik czcionek będzie helvetica_neue.ttf, który wygeneruje R.font.helvetica_neue
KROK 2: utwórz rodzinę czcionek
Na przykład:
KROK 3: użyj go
W układach XML:
Lub dodaj czcionki do stylu:
Aby uzyskać więcej przykładów, możesz postępować zgodnie z dokumentacją:
źródło
Jest trochę stary, ale nieco poprawiłem klasę CustomFontLoader i chciałem się nim podzielić, aby był pomocny. Po prostu utwórz nową klasę za pomocą tego kodu.
Następnie po prostu użyj tego kodu na swoim widoku tekstu:
źródło
W końcu znalazłem bardzo łatwe rozwiązanie tego problemu.
korzystaj z tych bibliotek pomocy technicznej na poziomie aplikacji ,
następnie utwórz katalog o nazwie „font” w folderze res
Następnie odwołaj się do tej czcionki z xml w ten sposób
W tym przykładzie times_new_roman_test jest plikiem ttf czcionki z tego katalogu czcionek
źródło
W ten sposób możesz utworzyć widok, który dziedziczy z TextView i wywołuje setTypeface na swoim konstruktorze.
źródło
Gdy twoja czcionka jest przechowywana w środku,
res/asset/fonts/Helvetica.ttf
użyj:Lub, jeśli plik czcionek jest przechowywany w środku,
res/font/helvetica.ttf
użyj:źródło
pobierz czcionkę z zasobu i ustaw na wszystkie dzieci
źródło
dodaj do attrs.xml, Liczby powinny być w kolejności w klasie tablicowej.
źródło
Android wykorzystuje czcionkę Roboto, która jest naprawdę ładnie wyglądająca, z kilkoma różnymi grubościami (zwykła, lekka, cienka, zagęszczona), które świetnie wyglądają na ekranach o wysokiej gęstości.
Sprawdź poniższy link, aby sprawdzić czcionki Roboto:
Jak korzystać z Roboto w układzie XML
Wracając do pytania, jeśli chcesz zmienić czcionkę dla wszystkich TextView / Button w swojej aplikacji , spróbuj dodać poniższy kod do pliku styles.xml, aby użyć czcionki Roboto-light :
I nie zapomnij użyć „AppTheme” w pliku AndroidManifest.xml
źródło
Może coś nieco prostszego:
(Uwaga: ten kod nie został przetestowany, ale ogólnie to podejście powinno działać dobrze).
źródło