studio font family change android fonts styles

font - roboto android



Valores válidos para android: fontFamily y a qué se asignan? (3)

En la respuesta a esta pregunta, el usuario enumera los valores de android:fontFamily y 12 variantes (ver más abajo). ¿De dónde vienen estos valores? La documentación para android:fontFamily no incluye esta información en ningún lugar (verifiqué here y here ). Las cadenas se enumeran en el archivo styles.xml Android en varios lugares, pero ¿cómo se asignan de nuevo a la fuente Roboto?

Desde Android 4.1 / 4.2, las siguientes familias de fuentes Roboto están disponibles:

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)

en combinación con esto

android:textStyle="normal|bold|italic"

12 variantes son posibles:

  • Regular
  • Itálico
  • Negrita
  • Negrita cursiva
  • Ligero
  • Luz-itálica
  • Delgado
  • Fino-cursiva
  • Condensado regular
  • Cursiva condensada
  • Condensado en negrita
  • Condensado negrita-cursiva

En el archivo styles.xml en la aplicación, estoy trabajando en alguien que figura como la familia de fuentes, y estoy bastante seguro de que está mal:

<item name="android:fontFamily">Roboto-Regular.ttf</item>

Me gustaría configurar correctamente el tema de nuestra aplicación (que incluye el uso correcto de FontFamily) y eliminar toda la redundancia de algunos de los estilos que se crearon antes de que viera el archivo.


¿De dónde vienen estos valores? La documentación para Android: fontFamily no incluye esta información en ningún lugar.

Estos de hecho no figuran en la documentación. Pero se mencionan here en la sección ''Familias de fuentes''. El documento enumera cada nueva API pública para Android Jelly Bean 4.1.

En el archivo styles.xml en la aplicación, estoy trabajando en alguien que figura como la familia de fuentes, y estoy bastante seguro de que está mal:

Sí, eso está mal. No hace referencia al archivo de fuente, tiene que usar el nombre de fuente mencionado en el documento vinculado arriba. En este caso debería haber sido esto:

<item name="android:fontFamily">sans-serif</item>

Al igual que la respuesta enlazada ya indicada, son posibles 12 variantes:

Añadido en Android Jelly Bean (4.1) - API 16:

Regular (predeterminado):

<item name="android:fontFamily">sans-serif</item> <item name="android:textStyle">normal</item>

Cursiva :

<item name="android:fontFamily">sans-serif</item> <item name="android:textStyle">italic</item>

Negrita

<item name="android:fontFamily">sans-serif</item> <item name="android:textStyle">bold</item>

Negrita y cursiva :

<item name="android:fontFamily">sans-serif</item> <item name="android:textStyle">bold|italic</item>

Luz

<item name="android:fontFamily">sans-serif-light</item> <item name="android:textStyle">normal</item>

Luz-cursiva :

<item name="android:fontFamily">sans-serif-light</item> <item name="android:textStyle">italic</item>

Delgado

<item name="android:fontFamily">sans-serif-thin</item> <item name="android:textStyle">normal</item>

Fino-cursiva :

<item name="android:fontFamily">sans-serif-thin</item> <item name="android:textStyle">italic</item>

Condensado regular :

<item name="android:fontFamily">sans-serif-condensed</item> <item name="android:textStyle">normal</item>

Cursiva condensada :

<item name="android:fontFamily">sans-serif-condensed</item> <item name="android:textStyle">italic</item>

Condensado en negrita :

<item name="android:fontFamily">sans-serif-condensed</item> <item name="android:textStyle">bold</item>

Condensado negrita-cursiva :

<item name="android:fontFamily">sans-serif-condensed</item> <item name="android:textStyle">bold|italic</item>

Añadido en Android Lollipop (v5.0) - API 21:

Medio

<item name="android:fontFamily">sans-serif-medium</item> <item name="android:textStyle">normal</item>

Medio-cursiva :

<item name="android:fontFamily">sans-serif-medium</item> <item name="android:textStyle">italic</item>

Negro

<item name="android:fontFamily">sans-serif-black</item> <item name="android:textStyle">italic</item>

Para una referencia rápida, así es como se ven todos:


Fuentes disponibles (a partir de Oreo)

La página de Tipografía de diseño de materiales tiene demostraciones de algunas de estas fuentes y sugerencias para elegir fuentes y estilos.

Para códigos de código: android.googlesource.com/platform/frameworks/base/+/master/data/… es la lista definitiva y cada vez más amplia de fuentes de Android.

Usando estas fuentes

Establezca los android:fontFamily y android:textStyle , por ejemplo,

<!-- Roboto Bold --> <TextView android:fontFamily="sans-serif" android:textStyle="bold" />

a los valores deseados de esta tabla:

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 es una fuente alternativa, no puedes especificarlo directamente)

Nota: esta tabla se deriva de android.googlesource.com/platform/frameworks/base/+/master/data/… . El nombre y el estilo de cada fuente se enumeran en fonts.xml, por ejemplo,

<family name="serif-monospace"> <font weight="400" style="normal">CutiveMono.ttf</font> </family>

serif-monospace es, pues, la familia de fuentes, y normal es el estilo.

Compatibilidad

En función del log de fonts.xml y el anterior system_fonts.xml , puede ver cuándo se agregó cada fuente:

  • Sandwich de helado: Roboto regular, negrita, cursiva y negrita cursiva
  • Jelly Bean: luz roboto, cursiva ligera, condensada, negrita condensada, cursiva condensada y negrita condensada
  • Jelly Bean MR1: Roboto fino y fino en cursiva
  • Pirulí:
    • Roboto medio, medio cursiva, negro y negro cursiva
    • Noto Serif regular, negrita, cursiva, negrita cursiva
    • Cutive Mono
    • Próximamente
    • Dancing Script
    • Carrois gótico SC
    • Noto Sans
  • Oreo MR1: medio condensado Roboto

Que yo sepa, no puede declarar fuentes personalizadas en xml o temas. Por lo general, solo hago clases personalizadas que amplían la vista de texto que establece su propia fuente en la creación de instancias y las utilizo en mis archivos de diseño XML.

es decir:

public class Museo500TextView extends TextView { public Museo500TextView(Context context, AttributeSet attrs) { super(context, attrs); this.setTypeface(Typeface.createFromAsset(context.getAssets(), "path/to/font.ttf")); } }

y

<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" />