Da meine Anforderung darin besteht, die vorhandene textView zu überschreiben findViewById(getResources().getIdentifier("xxx", "id", "android"));
, kann ich es nicht einfach versuchenonDraw()
andere Antwort .
Aber ich finde nur die richtigen Schritte heraus, um mein Problem zu beheben. Hier ist das Endergebnis von Layout Inspector:
Da ich nur die oberen Leerzeichen entfernen wollte, muss ich keine andere Schriftart auswählen, um die unteren Leerzeichen zu entfernen.
Hier ist der kritische Code, um das Problem zu beheben:
Typeface mfont = Typeface.createFromAsset(getResources().getAssets(), "fonts/myCustomFont.otf");
myTextView.setTypeface(mfont);
myTextView.setPadding(0, 0, 0, 0);
myTextView.setIncludeFontPadding(false);
Der erste Schlüssel ist die benutzerdefinierte Schriftart "fonts / myCustomFont.otf", die den Platz unten, aber nicht oben hat. Sie können dies leicht herausfinden, indem Sie die otf-Datei öffnen und auf eine beliebige Schriftart in Android Studio klicken:
Wie Sie sehen können, hat der Cursor unten einen zusätzlichen Abstand, aber nicht oben, sodass mein Problem behoben wurde.
Der zweite Schlüssel ist, dass Sie den Code nicht einfach überspringen können , da er sonst möglicherweise nicht funktioniert. Das ist der Grund, warum einige Leute kommentieren, dass eine Antwort funktioniert, und andere kommentieren, dass sie nicht funktioniert.
Lassen Sie uns veranschaulichen, was passieren wird, wenn ich einen von ihnen entferne.
Ohne setTypeface(mfont);
:
Ohne setPadding(0, 0, 0, 0);
:
Ohne setIncludeFontPadding(false);
:
Ohne 3 von ihnen (dh das Original):