Como meu requisito é substituir o textView existente findViewById(getResources().getIdentifier("xxx", "id", "android"));
, não posso simplesmente tentar onDraw()
outra resposta.
Mas acabei de descobrir as etapas corretas para corrigir meu problema. Aqui está o resultado final do Layout Inspector:
Como o que eu queria era apenas remover os espaços superiores, não preciso escolher outra fonte para remover os espaços inferiores.
Aqui está o código crítico para corrigi-lo:
Typeface mfont = Typeface.createFromAsset(getResources().getAssets(), "fonts/myCustomFont.otf");
myTextView.setTypeface(mfont);
myTextView.setPadding(0, 0, 0, 0);
myTextView.setIncludeFontPadding(false);
A primeira chave é definir a fonte personalizada "fonts / myCustomFont.otf", que tem o espaço na parte inferior, mas não na parte superior. Você pode descobrir isso facilmente, abra o arquivo otf e clique em qualquer fonte no Android Studio:
Como você pode ver, o cursor na parte inferior tem espaçamento extra, mas não na parte superior, por isso resolveu o meu problema.
A segunda chave é que você não pode simplesmente pular nenhum código , caso contrário ele pode não funcionar. Essa é a razão pela qual você pode encontrar algumas pessoas que comentam que uma resposta está funcionando e outras que não estão funcionando.
Vamos ilustrar o que acontecerá se eu remover um deles.
Sem setTypeface(mfont);
:
Sem setPadding(0, 0, 0, 0);
:
Sem setIncludeFontPadding(false);
:
Sem três deles (ou seja, o original):