Prawidłowe wartości dla Androida: fontFamily i co mapują?
W odpowiedzi na to pytanie użytkownik wymienia wartości dla android:fontFamily
i 12 wariantów (patrz poniżej). Skąd biorą się te wartości? Dokumentacja android:fontFamily
nie wymienia tych informacji w żadnym miejscu (sprawdziłem tutaj i tutaj). Ciągi są wymienione w stylach Androida .plik xml w różnych miejscach, ale w jaki sposób odwzorowują one czcionkę Roboto?
Z Androida 4.1 / 4.2, następujące rodziny czcionek Roboto to dostępne:
android:fontFamily="sans-serif" // roboto regular android:fontFamily="sans-serif-light" // roboto light android:fontFamily="sans-serif-condensed" // roboto condensed android:fontFamily="sans-serif-thin" // roboto thin (android 4.2) android:fontFamily="sans-serif-medium" // roboto medium (android 5.0)
W połączeniu z tym
android:textStyle="normal|bold|italic"
Możliwe jest 12 wariantów:
- Regular
- kursywa
- pogrubienie
- pogrubienie-kursywa
- Światło
- Light-italic
- cienki
- Thin-italic
- condensed regular
- skondensowana kursywa
- pogrubiona pogrubiona
- Condensed bold-italic
W pliku styles.xml
w aplikacja, nad którą pracuję ktoś wymienił to jako rodzinę czcionek i jestem prawie pewien, że jest źle:
<item name="android:fontFamily">Roboto-Regular.ttf</item>
Chciałbym, aby motyw naszej aplikacji został poprawnie skonfigurowany (co obejmuje prawidłowe używanie fontFamily) i usunąć wszystkie nadmiarowości, które są w niektórych stylach, które zostały utworzone, zanim spojrzałem na plik.
3 answers
W rzeczywistości nie są one wymienione w dokumentacji. Ale są one wymienione tutaj w sekcji "rodziny czcionek". Dokument zawiera listę wszystkich nowych publicznych API dla Androida Jelly Bean 4.1.Skąd się biorą te wartości? Dokumentacja dla Androida: fontFamily nie wymienia tych informacji w żadnym miejscu
Tak, to źle. Nie odwołujesz się do pliku czcionki, musisz użyć nazwy czcionki wymienionej w powiązanym dokumencie powyżej. W tym przypadku powinno być tak:W stylu.plik xml w aplikacji, nad którym pracuję ktoś wymienił to jako rodzinę czcionek i jestem prawie pewien, że to źle:
<item name="android:fontFamily">sans-serif</item>
Jak już podała odpowiedź, możliwe jest 12 wariantów:
Dodano w Android Jelly Bean ( 4.1) - API 16:
Regular (domyślnie):
<item name="android:fontFamily">sans-serif</item>
<item name="android:textStyle">normal</item>
Kursywa :
<item name="android:fontFamily">sans-serif</item>
<item name="android:textStyle">italic</item>
Pogrubienie :
<item name="android:fontFamily">sans-serif</item>
<item name="android:textStyle">bold</item>
Pogrubienie-kursywa :
<item name="android:fontFamily">sans-serif</item>
<item name="android:textStyle">bold|italic</item>
Światło:
<item name="android:fontFamily">sans-serif-light</item>
<item name="android:textStyle">normal</item>
Light-italic :
<item name="android:fontFamily">sans-serif-light</item>
<item name="android:textStyle">italic</item>
Cienki :
<item name="android:fontFamily">sans-serif-thin</item>
<item name="android:textStyle">normal</item>
Thin-italic :
<item name="android:fontFamily">sans-serif-thin</item>
<item name="android:textStyle">italic</item>
Skondensowana regularna :
<item name="android:fontFamily">sans-serif-condensed</item>
<item name="android:textStyle">normal</item>
Skondensowana kursywa :
<item name="android:fontFamily">sans-serif-condensed</item>
<item name="android:textStyle">italic</item>
Pogrubione :
<item name="android:fontFamily">sans-serif-condensed</item>
<item name="android:textStyle">bold</item>
Skondensowane pogrubienie-kursywa :
<item name="android:fontFamily">sans-serif-condensed</item>
<item name="android:textStyle">bold|italic</item>
Dodano w Android Lollipop (v5. 0) - API 21:
Medium :
<item name="android:fontFamily">sans-serif-medium</item>
<item name="android:textStyle">normal</item>
Średniozaawansowany :
<item name="android:fontFamily">sans-serif-medium</item>
<item name="android:textStyle">italic</item>
Czarny :
<item name="android:fontFamily">sans-serif-black</item>
<item name="android:textStyle">italic</item>
Dla szybkiego odniesienia, tak wyglądają wszystkie:
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-09 11:12:30
Dostępne czcionki (od Oreo)
Strona Material Design Typography zawiera dema niektórych z tych czcionek oraz sugestie dotyczące wyboru czcionek i stylów.
Dla kodów: fonts.xml
jest definitywną i stale rozszerzającą się listą czcionek Androida.
Używanie tych czcionek
Ustaw atrybuty android:fontFamily
i android:textStyle
, np.
<!-- Roboto Bold -->
<TextView
android:fontFamily="sans-serif"
android:textStyle="bold" />
Do pożądanych wartości z tego tabela:
Font | android:fontFamily | android:textStyle
-------------------------|-----------------------------|-------------------
Roboto Thin | sans-serif-thin |
Roboto Light | sans-serif-light |
Roboto Regular | sans-serif |
Roboto Bold | sans-serif | bold
Roboto Medium | sans-serif-medium |
Roboto Black | sans-serif-black |
Roboto Condensed Light | sans-serif-condensed-light |
Roboto Condensed Regular | sans-serif-condensed |
Roboto Condensed Medium | sans-serif-condensed-medium |
Roboto Condensed Bold | sans-serif-condensed | bold
Noto Serif | serif |
Noto Serif Bold | serif | bold
Droid Sans Mono | monospace |
Cutive Mono | serif-monospace |
Coming Soon | casual |
Dancing Script | cursive |
Dancing Script Bold | cursive | bold
Carrois Gothic SC | sans-serif-smallcaps |
(Noto Sans jest czcionką awaryjną; nie można jej bezpośrednio określić)
Uwaga: ta tabela pochodzi z fonts.xml
. Nazwa rodziny i styl każdej czcionki są wymienione w czcionkach.xml, np.
<family name="serif-monospace">
<font weight="400" style="normal">CutiveMono.ttf</font>
</family>
serif-monospace
jest więc rodziną czcionek, a {[8] } jest stylem.
Zgodność
Na podstawie dziennika czcionek.xml i były system_fonts.xml , można zobaczyć kiedy każda czcionka była dodano:
- Ice Cream Sandwich: Roboto regular, bold, italic, and bold italic
- Jelly Bean: Roboto light, light italic, condensed, condensed bold, condensed italic, and condensed bold italic
- Jelly Bean MR1: Roboto thin and thin italic
-
Lizak:
- Roboto medium, medium italic, black, and black italic
- Noto Serif regular, bold, italic, bold italic
- Cut Mono
- Już Wkrótce
- Scenariusz Tańca
- Carrois Gothic SC
- Noto Sans
- Oreo MR1: Roboto Condensed medium
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-21 20:55:36
O ile mi wiadomo, nie można deklarować własnych czcionek w XML lub motywach. Zwykle robię niestandardowe klasy rozszerzające textview, które ustawiają własną czcionkę na instancji i używają tych w moich plikach XML układu.
Ie:
public class Museo500TextView extends TextView {
public Museo500TextView(Context context, AttributeSet attrs) {
super(context, attrs);
this.setTypeface(Typeface.createFromAsset(context.getAssets(), "path/to/font.ttf"));
}
}
I
<my.package.views.Museo900TextView
android:id="@+id/dialog_error_text_header"
android:layout_width="190dp"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:textSize="12sp" />
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-31 00:01:30