Comprueba la familia de un objeto Typeface en Android

¿Es posible comprobar qué tipo de familia utiliza un objeto Typeface en la API de Android 8?

Estoy creando la tipografía en un objeto Paint como si

//Simplified code, the user actually selects the family and style from a list Paint paint = new Paint(); paint.setTypeface(Typeface.create(Typeface.SANS_SERIF, Typeface.BOLD)); 

Más tarde me gustaría poder ver a la familia así

 Typeface tf= paint.getTypeface(); if (tf.equals(Typeface.DEFAULT) || tf.equals(Typeface.DEFAULT_BOLD)) { //do something } else if (...) { //do something else } 

Esto no funciona ya que no son el mismo objeto, también he intentado tf == value pero de nuevo el mismo resultado. El objeto Typeface no parece exponer nada útil para ayudar con la detección de la familia, ¿hay una solución para esto? Sólo necesito detectar los tipos básicos de Android (SERIF, SANS-SERIF, DEFAULT, MONOSPACE, etc.)

No es fácil. La clave para la familia es native_instance int , que es paquete privado y no está expuesto directamente, como se puede ver en el código fuente .

Hay varias formas desagradables de obtener esa información, que puede o no funcionar en todos los dispositivos y en todas las versiones pasadas / presentes / futuras de Android.

Tal vez podría crear su propio objeto contenedor alrededor de Typeface que realiza el seguimiento de esta información.

Si observa las fuentes, verá que las predeterminadas se crean con el estilo DEFAULT (*), así que:

 Typeface paintTf = paint.getTypeface(); Typeface.SERIF.equals(Typeface.create(paintTf, Typeface.DEFAULT)); 

Podría hacer el trabajo (aquí compruebo es la familia es serif).

Nota: (*) no es cierto para DEFAULT_BOLD.

  • ¿Cuál es el equivalente de "android: fontFamily =" sans-serif-light "en código Java?
  • Compruebe si la fuente personalizada puede mostrar el carácter
  • "La tipografía nativa no se puede hacer" sólo para algunas personas
  • Utilice Typeface con EditText en el widget
  • Utilice la fuente Roboto en la aplicación con el nivel API mínimo 14
  • Roboto y Roboto Bold están garantizados para estar disponibles en 4.0+?
  • Recurso de fuente en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.