Como mi requisito es anular la obtención de textView existente findViewById(getResources().getIdentifier("xxx", "id", "android"));
, no puedo simplemente intentar onDraw()
otra respuesta.
Pero acabo de descubrir los pasos correctos para solucionar mi problema, aquí está el resultado final de Layout Inspector:
Como lo que quería es simplemente eliminar los espacios superiores, no tengo que elegir otra fuente para eliminar los espacios inferiores.
Aquí está el código crítico para arreglarlo:
Typeface mfont = Typeface.createFromAsset(getResources().getAssets(), "fonts/myCustomFont.otf");
myTextView.setTypeface(mfont);
myTextView.setPadding(0, 0, 0, 0);
myTextView.setIncludeFontPadding(false);
La primera clave es configurar la fuente personalizada "fonts / myCustomFont.otf" que tiene el espacio en la parte inferior pero no en la parte superior, puede resolverlo fácilmente abriendo el archivo otf y haciendo clic en cualquier fuente en Android Studio:
Como puede ver, el cursor en la parte inferior tiene un espacio adicional pero no en la parte superior, por lo que solucionó mi problema.
La segunda clave es que no puede simplemente omitir ninguno de los códigos , de lo contrario podría no funcionar. Esa es la razón por la que puede encontrar que algunas personas comentan que una respuesta está funcionando y otras comentan que no está funcionando.
Vamos a ilustrar lo que sucederá si elimino uno de ellos.
Sin setTypeface(mfont);
:
Sin setPadding(0, 0, 0, 0);
:
Sin setIncludeFontPadding(false);
:
Sin 3 de ellos (es decir, el original):