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
- Fuente de Gujarati
- ¿Cómo usar una tipografía personalizada en un widget?
- ¿Dispositivos Samsung compatibles con setTypeface (Typeface.Italic)?
- Establecer la fuente personalizada (TypeFace) en el diálogo en Android
- ¿Cómo puedo configurar Typeface en la barra de acción?
//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.)
- Tipo de fuente no funciona
- Fuente personalizada en android ListView
- Fuente predeterminada en Jelly Bean 4.2.2?
- Cambiar el tipo de letra de Android no funciona
- Excepción de puntero nulo al importar una fuente en android
- Cómo configurar Gujarati palabra conjunta en Android?
- Ayuda de Android con cambiar el tipo de fuente del botón, ¿cómo?
- ¿Typeface.createFromAsset () cache?
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.
- Cómo definir un widget personalizado utilizando código XML y java
- Cómo guardar los datos de la aplicación de Android en la salida de la aplicación