Więc chciałbym zmienić android:fontFamily
w Androidzie, ale nie widzę żadnych wstępnie zdefiniowanych czcionek w Androidzie. Jak wybrać jeden ze wstępnie zdefiniowanych? Tak naprawdę nie muszę definiować własnego TypeFace'a, ale wszystko, czego potrzebuję, to coś innego niż to, co pokazuje teraz.
<TextView
android:id="@+id/HeaderText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="52dp"
android:gravity="center"
android:text="CallerBlocker"
android:textSize="40dp"
android:fontFamily="Arial"
/>
Wygląda na to, że to, co tam zrobiłem, naprawdę nie zadziała! BTW android:fontFamily="Arial"
była głupią próbą!
Odpowiedzi:
W Androidzie 4.1 / 4.2 / 5.0 dostępne są następujące rodziny czcionek Roboto :
w połączeniu z
możliwe jest 16 wariantów:
fonts.xml
źródło
android:fontFamily="sans-serif-black-small-caps"
nie działa. Czy ktoś wieandroid:fontFamily
TextView.Oto sposób programowego ustawienia czcionki:
umieść plik czcionek w folderze zasobów. W moim przypadku utworzyłem podkatalog o nazwie czcionki.
EDYCJA: Jeśli zastanawiasz się, gdzie jest folder zasobów, zobacz to pytanie
źródło
Począwszy od Androida-Studio 3.0 bardzo łatwo zmienić rodzinę czcionek
Korzystając z biblioteki pomocy 26, będzie działać na urządzeniach z Android API w wersji 16 i wyższej
Utwórz folder
font
wres
katalogu. Pobierz czcionkę, którą chcesz i wklej ją dofont
folderu. Struktura powinna wyglądać jak poniżejUwaga: Począwszy od Android Support Library 26.0, musisz zadeklarować oba zestawy atrybutów (Android: i app:), aby zapewnić ładowanie czcionek na urządzeniach z Api 26 lub starszym.
Teraz możesz zmienić czcionkę w układzie za pomocą
Aby zmienić programowo
Aby zmienić czcionkę za pomocą styles.xml, utwórz styl
i zastosuj ten styl do
TextView
możesz także stworzyć własną rodzinę czcionek
- Kliknij folder czcionek prawym przyciskiem myszy i wybierz Nowy> Plik zasobów czcionek . Zostanie wyświetlone okno Nowy plik zasobów.
- Wprowadź nazwę pliku , a następnie kliknij OK . Nowy plik XML zasobów czcionek zostanie otwarty w edytorze.
Na przykład tutaj wpisz własną rodzinę czcionek
jest to po prostu mapowanie określonego fontStyle i fontWeight na zasób czcionki, który zostanie użyty do renderowania tego konkretnego wariantu. Prawidłowe wartości dla fontStyle są normalne lub kursywą; i fontWeight jest zgodny ze specyfikacją grubości czcionki CSS
1. Aby zmienić rodzinę czcionek w układzie , możesz pisać
2. Aby zmienić programowo
Aby zmienić czcionkę całej aplikacji Dodaj te dwa wiersze w AppTheme
Zobacz dokumentację , samouczek czcionek niestandardowych Androida, aby uzyskać więcej informacji
źródło
getResources()
? EDYCJA : Ta linia na końcu twojej odpowiedzi zadziałała dla mnie:Typeface typeface = ResourcesCompat.getFont(context, R.font.myfont);
android:fontWeight
iapp:fontWeight
Musiałem przeanalizować
/system/etc/fonts.xml
w ostatnim projekcie. Oto aktualne rodziny czcionek od Lollipop:Oto analizator składni (oparty na FontListParser ):
Możesz użyć powyższej klasy w swoim projekcie. Na przykład możesz dać swoim użytkownikom wybór rodzin czcionek i ustawić krój pisma na podstawie ich preferencji.
Mały niekompletny przykład:
źródło
getSystemFonts()
, otrzymałem wyjątekorg.xmlpull.v1.XmlPullParserException: END_TAG expected (position:START_TAG (empty) <axis tag='wdth' stylevalue='100.0'>@219:51 in java.io.InputStreamReader@f001fb3)
Android nie pozwala na ustawienie niestandardowych czcionek z układu XML. Zamiast tego musisz spakować określony plik czcionek w folderze zasobów aplikacji i ustawić go programowo. Coś jak:
Zauważ, że możesz uruchomić ten kod tylko po wywołaniu setContentView (). Ponadto tylko niektóre czcionki są obsługiwane przez system Android i powinny mieć format
.ttf (TrueType)
lub.otf (OpenType)
. Nawet wtedy niektóre czcionki mogą nie działać.Jest to czcionka, która zdecydowanie działa na Androidzie, i możesz jej użyć, aby potwierdzić, że Twój kod działa, na wypadek, gdyby plik czcionki nie był obsługiwany przez Androida.
Aktualizacja Androida O: Jest to teraz możliwe dzięki XML w Androidzie O , na podstawie komentarza Rogera.
źródło
Aby ustawić Roboto programowo:
źródło
To jest tak samo jak
android:typeface
.wbudowane czcionki to:
Zobacz android: krój pisma .
źródło
setTypeface()
. MianowiciefontFamily
,typeface
itextStyle
. Ale nie mogę przez całe życie dowiedzieć się, jak są one dokładnie połączone, aby rozwiązać konkretną instancję kroju pisma. Czy ktoś to rozgryzł? Dokumentacja Google jest mniej niż pomocna ...Jeśli chcesz programowo, możesz użyć
Gdzie
SANS_SERIF
możesz użyć:DEFAULT
DEFAULT_BOLD
MONOSPACE
SANS_SERIF
SERIF
I gdzie
ITALIC
możesz użyć:BOLD
BOLD_ITALIC
ITALIC
NORMAL
Wszystko zostało napisane na Android Developers
źródło
Korzystam z doskonałej biblioteki Calligraphy autorstwa Chrisa Jenxa, zaprojektowanej tak, abyś mógł używać niestandardowych czcionek w aplikacji na Androida. Spróbuj!
źródło
To, czego chcesz, nie jest możliwe. Musisz ustawić
TypeFace
w swoim Kodeksie.W
XML
co można zrobić, topoza tym nie można dużo grać z czcionkami w XML. :)
Aby
Arial
ustawić typ twarzy w kodzie.źródło
Łatwym sposobem zarządzania czcionkami byłoby zadeklarowanie ich za pomocą zasobów, takich jak:
Jest to oparte na kodzie źródłowym tu i tutaj
źródło
Dynamicznie możesz ustawić fontfamily podobną do Androida: fontFamily w xml za pomocą tego,
Oto lista używanych domyślnych czcionek , użyj dowolnego z nich, zastępując ciąg podwójnego cudzysłowu „sans-serif-medium”
„mycustomfont.ttf” to plik ttf. Ścieżka będzie w src / asset / fonts / mycustomfont.ttf , możesz dowiedzieć się więcej o czcionce domyślnej w tej rodzinie czcionek domyślnych
źródło
łatwo ustawić programowo czcionkę do dowolnego widoku tekstu z katalogu res> font
źródło
Myślę, że jestem za późno, ale może to rozwiązanie jest pomocne dla innych. Aby użyć niestandardowej czcionki, umieść plik czcionki w katalogu czcionek.
źródło
Z pewnymi próbami i błędami nauczyłem się następujących rzeczy.
W pliku * .xml można łączyć czcionki podstawowe z następującymi funkcjami, nie tylko z krojem pisma:
Dzięki tym dwóm stylom nie było potrzeby używania kroju pisma w żadnym innym przypadku. Zakres kombinacji jest znacznie większy dzięki fontfamily i textStyle.
źródło
Prawidłowa wartość android: fontFamily jest zdefiniowana w /system/etc/system_fonts.xml(4.x) lub /system/etc/fonts.xml(5.x). Ale producent urządzenia może go zmodyfikować, więc rzeczywista czcionka użyta do ustawienia wartości fontFamily zależy od wyżej wspomnianego pliku określonego urządzenia.
W AOSP czcionka Arial jest poprawna, ale musi być zdefiniowana przy użyciu „arial”, a nie „Arial”, na przykład android: fontFamily = „arial” . Spójrz qucik na system_fonts.xml Kitkata
////////////////////////////////////////////////// ////////////////////////
Istnieją trzy odpowiednie atrybuty xml do definiowania „czcionki” w układzie - android: fontFamily , android: krój czcionki i android: textStyle . Kombinacja „fontFamily” i „textStyle” lub „krój pisma” i „textStyle” może być używana do zmiany wyglądu czcionki w tekście, więc jest używana osobno. Fragment kodu w TextView.java wygląda następująco:
Z kodu Widzimy:
źródło
Oto łatwiejsze rozwiązanie, które może działać w niektórych przypadkach. Zasadą jest dodanie niewidocznego TextVview do twojego układu xml i pobranie jego typeFace w kodzie java.
Układ w pliku xml:
I kod Java:
To zadziałało dla mnie (na przykład w TextSwitcher).
źródło
Spróbuj tego:
źródło
Możesz to również zrobić, dodając folder czcionek w katalogu res, jak poniżej.
Następnie wybierz Czcionka jako typ zasobu.
Dostępne czcionki można znaleźć na stronie https://www.1001fonts.com/ , a następnie wyodrębnić pliki TTF do tego katalogu czcionek.
Na koniec zmień plik XML zawierający widok tekstu, dodając android: fontFamily: „@ font / urfontfilename”
źródło
app:fontFamily=
jednak użyć , wszystko inne jest takie samo.Jednym prostym sposobem jest dodanie żądanej czcionki w projekcie.
Przejdź do Plik-> Nowy-> Nowy katalog zasobów Wybierz czcionkę
Spowoduje to utworzenie nowego katalogu, czcionki w twoich zasobach.
Pobierz swój czcionkę (.ttf) . Używam https://fonts.google.com do tego samego
Dodaj to do folderu czcionek, a następnie użyj ich w pliku XML lub programowo.
XML -
Programowo -
źródło
ResourcesCompat.getFont
Metoda lepszego wykorzystaniaźródło
Jeśli chcesz używać TextView w tak wielu miejscach z tą samą rodziną czcionek, rozszerz klasę TextView i ustaw czcionkę w następujący sposób: -
A następnie użyj tej niestandardowej klasy w XML dla TextView w następujący sposób: -
źródło
Jeśli używasz Androida Studio 3.5+, zmiana czcionki jest bardzo prosta. Wybierz widget tekstowy w widoku Projekt i zaznacz fontFamily w oknie atrybutów. Lista wartości zawiera wszystkie dostępne czcionki, z których możesz wybrać jedną. Jeśli szukasz czcionek Google, kliknij opcję Więcej czcionek.
Okno atrybutów
Czcionki Google
źródło
Chcę tylko wspomnieć, że piekło z czcionkami wewnątrz Androida wkrótce się skończy, ponieważ w tym roku na Google IO w końcu dostaliśmy to -> https://developer.android.com/preview/features/working-with-fonts. HTML
Teraz jest nowy typ czcionki czcionka i możesz umieścić wszystkie czcionki aplikacji w folderze res / fonts i uzyskać do nich dostęp za pomocą R.font.my_custom_font, podobnie jak możesz uzyskać dostęp do wartości res string , rysowalnych res res itp. Masz nawet szansę aby utworzyć plik xml font-face , w którym będą ustawione niestandardowe czcionki (o kursywie, pogrubieniu i podkreśleniu attr).
Przeczytaj powyższy link, aby uzyskać więcej informacji. Zobaczmy wsparcie.
źródło
Redman
powyższa odpowiedź użytkownika jest nadal bardzo niezbędną częścią rozwiązania.Dostępna jest do tego ładna biblioteka
źródło
Nowy zasób czcionek umożliwia bezpośrednie ustawienie
font
za pomocąźródło
Ustawiasz styl w
res/layout/value/style.xml
ten sposób:i aby użyć tego stylu w
main.xml
użyciu pliku:źródło
W przypadku Androida-studio 3 i nowszych możesz użyć tego stylu, a potem wszystkich
textView
zmian czcionek w aplikacji.stwórz ten styl w
style.xml
:Następnie użyj go w swoim motywie:
źródło
Najprostszym sposobem na programowe dodanie czcionki do TextView jest, po pierwsze, dodanie pliku czcionki w folderze Zasoby w projekcie. Na przykład ścieżka czcionki wygląda następująco:
assets/fonts/my_font.otf
I dodaj go do TextView jako:
Kotlin
Jawa
źródło
Tutaj możesz zobaczyć wszystkie dostępne wartości fontFamily i odpowiadające im nazwy plików czcionek (ten plik jest używany w Androidzie 5.0+). Na urządzeniu mobilnym można go znaleźć w:
(Dla Androida 4.4 i niższych korzystających z tej wersji, ale myślę, że
fonts.xml
ma bardziej przejrzysty format i jest łatwy do zrozumienia.)Na przykład,
Atrybut name
name="sans-serif"
offamily
tagu określona wartość można wykorzystać w Androidzie: fontFamily.font
Tag określenie odzwierciedla pliki czcionek.W takim przypadku możesz zignorować źródło
<!-- fallback fonts -->
, którego używa do logiki rezerwowej czcionek.źródło