Używam jasnej czcionki Roboto w mojej aplikacji. Aby ustawić czcionkę, muszę dodać ją android:fontFamily="sans-serif-light"
do każdego widoku. Czy istnieje sposób zadeklarowania czcionki Roboto jako domyślnej rodziny czcionek w całej aplikacji? Próbowałem tak, ale to nie działało.
<style name="AppBaseTheme" parent="android:Theme.Light"></style>
<style name="AppTheme" parent="AppBaseTheme">
<item name="android:fontFamily">sans-serif-light</item>
</style>
android
android-fonts
tomrozb
źródło
źródło
Odpowiedzi:
Odpowiedź brzmi tak.
Globalne światło Roboto
TextView
iButton
klasy:Po prostu wybierz styl, który chcesz z listy themes.xml , a następnie utwórz własny styl na podstawie oryginalnego. Na koniec zastosuj styl jako motyw aplikacji.
Będzie działać tylko z wbudowanymi czcionkami, takimi jak Roboto, ale to było pytanie. W przypadku czcionek niestandardowych (na przykład ładowanych z zasobów) ta metoda nie będzie działać.
EDYCJA 08/13/15
Jeśli używasz motywów AppCompat, pamiętaj o usunięciu
android:
prefiksu. Na przykład:Uwaga:
buttonStyle
nie zawieraandroid:
przedrostka, aletextViewStyle
musi go zawierać.źródło
sans-serif-light
wartość? Czy istniejefontFamily
gdzieś lista prawidłowych wartości ? Przeglądałem dokumenty, a także pliki motywów i stylów w źródle Androida i nic nie mogę znaleźć.Wraz z wydaniem Androida Oreo możesz skorzystać z biblioteki wsparcia, aby osiągnąć ten cel.
Odwołaj się do domyślnej rodziny czcionek w głównym stylu aplikacji:
Sprawdź https://developer.android.com/guide/topics/ui/look-and-feel/fonts-in-xml.html w celu uzyskania bardziej szczegółowych informacji.
źródło
android:
prefiksBase.TextAppearance.AppCompat
, nie jest tam używana.Aby zmienić czcionkę aplikacji, wykonaj następujące czynności:
res
katalogu utwórz nowy katalog i wywołaj gofont
.res
->values
->styles.xml
inside<resources>
-><style>
dodaj swoją czcionkę<item name="android:fontFamily">@font/font_name</item>
.Teraz cały tekst Twojej aplikacji powinien znajdować się w dodawanej fontannie.
źródło
PRZECZYTAJ PONIŻSZE AKTUALIZACJE
Miałem ten sam problem z osadzaniem nowej czcionki i wreszcie zacząłem pracować z rozszerzeniem TextView i ustawić czcionkę wewnątrz.
Musisz zmienić TextView Elements później z na w każdym elemencie. A jeśli używasz Kreatora interfejsu użytkownika w środowisku Eclipse, czasami nie wyświetla poprawnie TextViews. To była jedyna rzecz, która działa dla mnie ...
AKTUALIZACJA
Obecnie używam refleksji, aby zmieniać kroje w całej aplikacji bez rozszerzania TextView. Sprawdź ten post SO
AKTUALIZACJA 2
Począwszy od interfejsu API na poziomie 26 i dostępnego w „bibliotece pomocy”, której można użyć
Dalsze informacje: Czcionki w XML
źródło
getContext()
gdy zmienna jest statyczna. Powinieneś wdrożyć go w sposób singleton, w przeciwnym razie obecny kod nawet się nie skompiluje.Dodaj ten wiersz kodu do pliku res / value / styles.xml
tak będzie wyglądał cały styl
zmień „circular_medium” na własną nazwę czcionki.
źródło
Nie mów o wydajności, dla niestandardowej czcionki możesz mieć pętlę metody rekurencyjnej przez wszystkie widoki i ustawić krój pisma, jeśli jest to TextView:
W całej swojej aktywności przekaż do niej bieżącą grupę ViewGroup po ustawieniu setContentView i gotowe:
Dla fragmentu możesz zrobić coś podobnego.
źródło
recyclerView
jak diabli.Innym sposobem na zrobienie tego dla całej aplikacji jest użycie refleksji opartej na tej odpowiedzi
wtedy za każdym razem, gdy chcesz zastąpić czcionki, możesz po prostu wywołać metodę i dać jej mapę czcionek w następujący sposób:
dla pełnego sprawdzenia przykładu
Działa to tylko w przypadku zestawu Android SDK 21 i nowszych wersji we wcześniejszych wersjach. Sprawdź pełny przykład
źródło
Po prostu użyj tej biblioteki, skompiluj ją w pliku ocen
i użyj go w metodzie onCreate w głównej działalności
To najbardziej elegancki i szybki sposób na zrobienie tego.
źródło
To jest praca dla mojego projektu, źródło https://gist.github.com/artem-zinnatullin/7749076
Utwórz katalog czcionek w folderze zasobów, a następnie skopiuj własną czcionkę do katalogu czcionek, na przykład używam trebuchet.ttf;
Utwórz klasę TypefaceUtil.java;
Edytuj motyw w styles.xml dodaj poniżej
Przykład w My styles.xml
Wreszcie w działaniu lub fragmencie onCreate wywołaj TypefaceUtil.java
źródło
Android nie zapewnia wsparcia dla stosowania czcionek w całej aplikacji (zobacz ten problem) ). Masz 4 opcje ustawienia czcionki dla całej aplikacji:
Szczegóły tych opcji można znaleźć tutaj .
źródło
Wiem, że to pytanie jest dość stare, ale znalazłem dobre rozwiązanie. Zasadniczo przekazujesz układ kontenera do tej funkcji, która zastosuje czcionkę do wszystkich obsługiwanych widoków i rekurencyjnie cicle w układach potomnych:
źródło
jedynie do zadanej czcionki z app
normal
,sans
,serif
lubmonospace
(nie niestandardową czcionkę!), można to zrobić.zdefiniuj motyw i ustaw
android:typeface
atrybut na krój pisma, którego chcesz używaćstyles.xml
:zastosuj motyw do całej aplikacji w
AndroidManifest.xml
pliku:referencje Androida
źródło
Wypróbuj tę bibliotekę, lekką i łatwą do wdrożenia
https://github.com/sunnag7/FontStyler
źródło
Odpowiedź brzmi: nie, nie możesz. Zobacz Czy można ustawić niestandardową czcionkę dla całej aplikacji? po więcej informacji.
Istnieją obejścia, ale nic w wierszach „jednego wiersza kodu tutaj i wszystkie moje czcionki będą takie zamiast tego ”.
(W pewnym sensie dziękuję za to Google i Apple). Niestandardowe czcionki mają swoje miejsce, ale dzięki czemu można je łatwo zastąpić szeroką aplikacją, stworzyłby cały świat aplikacji Comic Sans )
źródło