Poiché il mio requisito è quello di sostituire il textView esistente findViewById(getResources().getIdentifier("xxx", "id", "android"));
, quindi non posso semplicemente provare onDraw()
ad un'altra risposta.
Ma ho appena capito i passaggi corretti per risolvere il mio problema, ecco il risultato finale da Inspector layout:
Dal momento che quello che volevo è semplicemente rimuovere gli spazi superiori, quindi non devo scegliere altri caratteri per rimuovere gli spazi inferiori.
Ecco il codice critico per risolverlo:
Typeface mfont = Typeface.createFromAsset(getResources().getAssets(), "fonts/myCustomFont.otf");
myTextView.setTypeface(mfont);
myTextView.setPadding(0, 0, 0, 0);
myTextView.setIncludeFontPadding(false);
La prima chiave è impostare il carattere personalizzato "fonts / myCustomFont.otf" che ha lo spazio in basso ma non in alto, puoi facilmente capirlo aprendo il file otf e fai clic su qualsiasi carattere in Android Studio:
Come puoi vedere, il cursore in basso ha una spaziatura aggiuntiva ma non in alto, quindi ha risolto il mio problema.
La seconda chiave è che non puoi semplicemente saltare alcun codice , altrimenti potrebbe non funzionare. Questo è il motivo per cui puoi trovare alcune persone che commentano che una risposta sta funzionando e altre che commentano che non funziona.
Illustriamo cosa accadrà se ne rimuoverò uno.
Senza setTypeface(mfont);
:
Senza setPadding(0, 0, 0, 0);
:
Senza setIncludeFontPadding(false);
:
Senza 3 di essi (ovvero l'originale):