EDIT: Con un po ' la sperimentazione, in particolare con il Galaxy S3 che consente all'utente di cambiare il loro carattere, questo è quello che ho scoperto:
- Utilizzando
Typeface.create(Typeface.SANS_SERIF, Typeface.NORMAL)
tornerà ° al carattere CUSTOM, piuttosto che al carattere sans-serif di default del sistema (ad es. Roboto)
- Invece, utilizzare
Typeface.create("sans-serif", Typeface.NORMAL)
(o BOLD) e restituirà Roboto indipendentemente dalla personalizzazione del carattere dell'utente. Dalla lista qui sotto, puoi usare "helvetica", "tahoma", "verdana" o "arial" sopra invece di "sans-serif" con lo stesso risultato.
Ho trovato un documento chiamato system_fonts.xml
che sembra confermare che Roboto sarà utilizzato per qualsiasi riferimento alla Typeface.SANS_SERIF
nella directory SDK sotto:
piattaforme> Android-14> Dati> font
<!--
System Fonts
This file lists the font families that will be used by default for all supported glyphs.
Each entry consists of a family, various names that are supported by that family, and
up to four font files. The font files are listed in the order of the styles which they
support: regular, bold, italic and bold-italic. If less than four styles are listed, then
the styles with no associated font file will be supported by the other font files listed.
The first family is also the default font, which handles font request that have not specified
specific font names.
Any glyph that is not handled by the system fonts will cause a search of the fallback fonts.
The default fallback fonts are specified in the file /system/etc/fallback_fonts.xml, and there
is an optional file which may be supplied by vendors to specify other fallback fonts to use
in /vendor/etc/fallback_fonts.xml.
-->
<familyset>
<family>
<nameset>
<name>sans-serif</name>
<name>arial</name>
<name>helvetica</name>
<name>tahoma</name>
<name>verdana</name>
</nameset>
<fileset>
<file>Roboto-Regular.ttf</file>
<file>Roboto-Bold.ttf</file>
<file>Roboto-Italic.ttf</file>
<file>Roboto-BoldItalic.ttf</file>
</fileset>
</family>
Dal momento che i tipi di carattere vendor devono essere posti in fallback_fonts.xml
e i font di sistema avranno sempre la priorità, e la prima famiglia elencata è Roboto con gli alias di sans-serif, aria, helvetica, tahoma o verdana, a meno che non scopra altrimenti penso che sia sicuro assumere che Roboto sarà il font restituito per una chiamata a Typeface.create(Typeface.SANS_SERIF, Typeface.NORMAL)
.
Ho intenzione di lasciarlo aperto per ora, sperando in una risposta definitiva, poiché non sono sicuro che un OEM possa modificare system_fonts.xml. Se lo sono, allora questo non è affatto d'aiuto.
Non ne sono completamente sicuro, ma penso che il tema predefinito di Holo non specifichi il carattere tipografico, solo la dimensione e lo stile del testo che consentirebbe ai produttori di selezionare quali tipi di carattere spedire/utilizzare. – ebarrenechea
@ebarrenchea Anche io non ne sono sicuro, e non riesco a trovare un posto ufficiale nella documentazione o nei documenti di compatibilità che conferma o nega questo, ed è per questo che ho scelto di dire "AFAIK" –
Ho appena chiamato Ping Adam Powell (che ha scritto [questo articolo] (http://android-developers.blogspot.com/2012/01/holo-everywhere.html)) su Google+ per vedere se forse può chiarire. – kcoppock