Chcę określić własny rozmiar tekstu w mojej aplikacji, ale mam z tym problem.
Kiedy zmieniam rozmiar czcionki w ustawieniach urządzenia, TextView
zmienia się również rozmiar czcionki mojej aplikacji .
android
android-layout
textview
android-fonts
Vikasdeep Singh
źródło
źródło
Odpowiedzi:
W rzeczywistości rozmiar czcionki Ustawienia wpływa tylko na rozmiary w
sp
. Więc wszystko co musisz zrobić - określićtextSize
wdp
zamiastsp
, następnie ustawienia nie zmieni rozmiar tekstu w aplikacji.Oto link do dokumentacji: Wymiary
Należy jednak pamiętać, że oczekiwanym zachowaniem jest to, że czcionki we wszystkich aplikacjach są zgodne z preferencjami użytkownika. Istnieje wiele powodów, dla których użytkownik może chcieć dostosować rozmiary czcionek, a niektórzy z nich mogą być nawet osobami z upośledzeniem wzroku. Używanie
dp
zamiastsp
tekstu może prowadzić do niezamierzonego dyskryminowania niektórych użytkowników aplikacji.to znaczy:
źródło
sp
i kiedy powinienem używaćdp
. Tutaj dostałem naprawdę dobrą odpowiedź: stackoverflow.com/questions/11638691/…Najłatwiej to zrobić, używając czegoś podobnego do następującego:
Jeśli chcesz dowiedzieć się więcej o
textSize
usłudze, zajrzyj do dokumentacji dla programistów Androida .źródło
Użyj
dimension
typu zasobów, takich jak zasoby, których używaszstring
( DOCS ).W swoim
dimens.xml
pliku zadeklaruj zmienne wymiarów:Następnie możesz użyć tych wartości w następujący sposób:
Możesz zadeklarować różne
dimens.xml
pliki dla różnych typów ekranów. Dzięki temu uzyskasz pożądany wygląd swojej aplikacji na różnych urządzeniach.Jeśli nie określisz,
android:textSize
system użyje wartości domyślnych.źródło
Należy również pamiętać, że jeśli parametr textSize jest ustawiony w kodzie, wywołanie
textView.setTextSize(X)
interpretuje liczbę (X) jako SP. SłużysetTextSize(TypedValue.COMPLEX_UNIT_DIP, X)
do ustawiania wartości w dp .źródło
Nie jest dobrym rozwiązaniem ponowne określanie DIP lub SP za pomocą kodu, jeśli zostało już zdefiniowane w pliku dimen.xml.
Myślę, że najlepszą opcją jest użycie PX przy użyciu wartości dimen.xml:
W ten sposób możesz w razie potrzeby przełączyć się z DP na SP w pliku dimen.xml bez konieczności zmiany kodu.
źródło
Prostym sposobem uniknięcia wpływu rozmiaru czcionki systemowej na całą aplikację jest updateConfiguration przy użyciu podstawowego działania.
źródło
to może pomóc. Dodaj kod w swojej niestandardowej aplikacji lub BaseActivity
Jednak zasób # updateConfiguration jest uszczuplony na poziomie API 25, co oznacza, że pewnego dnia w przyszłości nie będzie obsługiwany.
źródło
Możesz użyć tego kodu:
rozwiązuje twój problem, ale musisz wiedzieć, że powinieneś szanować decyzje użytkowników. w związku z tym zmiana rozmiaru tekstu w ustawieniach urządzenia nie zmieni tej wartości. dlatego musisz użyć sp zamiast dp . Sugeruję więc, aby przejrzeć aplikację z różnymi rozmiarami czcionek systemowych (mały, normalny, duży, ...)
źródło
dla kotlina to działa dla mnie
źródło
zmień DP na sp to dobra praktyka dla Androida android: textSize = "18sp"
źródło
Jeśli używane jednostki to SP, a nie DP, i chcesz nadpisać systemowe skalowanie czcionek, wszystko, co robisz, to zastąpienie jednej metody w działaniu - zobacz ten post .
resources.updateConfiguration jest przestarzała i zawiera błędy (na Oreo miałem problemy ze sformatowanym tekstem).
źródło
Zastąp
getResources()
w aktywności.Ustaw rozmiar TextView w sp, jak zwykle, jak
android:textSize="32sp"
źródło
w Androidzie 8 to rozwiązanie działa dla mnie
dodaj ten kod w podstawowym działaniu
źródło https://stackoverflow.com/a/57225687/7985871
źródło