Ponieważ moim wymaganiem jest zastąpienie istniejącego textView findViewById(getResources().getIdentifier("xxx", "id", "android"));
, więc nie mogę po prostu spróbować onDraw()
innej odpowiedzi.
Ale po prostu wymyślam właściwe kroki, aby rozwiązać mój problem, oto końcowy wynik Inspektora układu:
Ponieważ chciałem po prostu usunąć górne spacje, więc nie muszę wybierać innej czcionki, aby usunąć dolne spacje.
Oto krytyczny kod, aby to naprawić:
Typeface mfont = Typeface.createFromAsset(getResources().getAssets(), "fonts/myCustomFont.otf");
myTextView.setTypeface(mfont);
myTextView.setPadding(0, 0, 0, 0);
myTextView.setIncludeFontPadding(false);
Pierwszym kluczem jest ustawienie niestandardowej czcionki „fonts / myCustomFont.otf”, która ma miejsce na dole, ale nie na górze, możesz łatwo to odkryć, otwierając plik otf i klikając dowolną czcionkę w Android Studio:
Jak widać, kursor na dole ma dodatkowe odstępy, ale nie na górze, więc rozwiązało to mój problem.
Drugim kluczem jest to, że nie możesz po prostu pominąć żadnego kodu , w przeciwnym razie może nie działać. To jest powód, dla którego niektórzy ludzie komentują, że odpowiedź działa, a inni komentują, że nie działa.
Zilustrujmy, co się stanie, jeśli usunę jeden z nich.
Bez setTypeface(mfont);
:
Bez setPadding(0, 0, 0, 0);
:
Bez setIncludeFontPadding(false);
:
Bez 3 z nich (tj. Oryginału):