Я хочу указать свой собственный размер текста в моем приложении, но у меня возникла проблема с этим.
Когда я изменяю размер шрифта в настройках устройства, размер шрифта моего приложения TextView
также изменяется.
android
android-layout
textview
android-fonts
Викасдип Сингх
источник
источник
Ответы:
На самом деле, размер шрифта Настройки влияет только на размеры в
sp
. Так что все , что нужно сделать - определитьtextSize
вdp
вместоsp
, то настройки не изменит размер текста в вашем приложении.Вот ссылка на документацию: Размеры
Однако обратите внимание, что ожидаемое поведение заключается в том, что шрифты во всех приложениях соответствуют предпочтениям пользователя. Есть много причин, по которым пользователь может захотеть изменить размеры шрифта, и некоторые из них могут даже быть медицинскими пользователями с нарушениями зрения. Использование
dp
вместоsp
текста может привести к нежелательной дискриминации некоторых пользователей вашего приложения.то есть:
источник
sp
и когда я должен использоватьdp
. Я получил очень хороший ответ здесь: stackoverflow.com/questions/11638691/…Самый простой способ сделать это - использовать что-то вроде следующего:
Если вы хотите узнать больше об этой
textSize
собственности, вы можете проверить документацию для разработчиков Android .источник
Используйте
dimension
тип ресурсов, как вы используетеstring
ресурсы ( DOCS ).В вашем
dimens.xml
файле объявите переменные измерения:Затем вы можете использовать эти значения следующим образом:
Вы можете объявить разные
dimens.xml
файлы для разных типов экранов. Это гарантирует желаемый вид вашего приложения на разных устройствах.Если вы не укажете,
android:textSize
система использует значения по умолчанию.источник
Также обратите внимание, что если textSize установлен в коде, вызов
textView.setTextSize(X)
интерпретирует число (X) как SP. ИспользуйтеsetTextSize(TypedValue.COMPLEX_UNIT_DIP, X)
для установки значений в дп .источник
Не стоит снова указывать DIP или SP по коду, если он уже определен в файле измерения .xml.
Я думаю, что лучший вариант - использовать PX при использовании значения измерения .xml:
Таким образом, вы можете переключаться с DP на SP, если это необходимо, в файле измерения.xml без необходимости изменения кода.
источник
Простой способ предотвратить воздействие всего приложения на размер системного шрифта - обновить конфигурацию, используя базовое действие.
источник
это может помочь добавьте код в ваше пользовательское приложение или BaseActivity
однако Resource # updateConfiguration удален на уровне API 25, что означает, что когда-нибудь в будущем он не будет поддерживаться.
источник
Вы можете использовать этот код:
это решает вашу проблему, но вы должны знать, что вы должны уважать решения пользователей. при этом изменение размера текста из настроек устройства не изменит это значение. вот почему вам нужно использовать sp вместо dp . Поэтому я предлагаю рассмотреть ваше приложение с различными размерами системного шрифта (маленький, нормальный, большой, ...)
источник
для котлина, у меня работает
источник
поменяйте DP на sp это хорошая практика для android android: textSize = "18sp"
источник
Если используются единицы SP, а не DP, и вы хотите переопределить масштабирование системного шрифта, все, что вам нужно сделать, это переопределить один метод в действии - см. Этот пост .
resources.updateConfiguration устарела и содержит ошибки (на Oreo у меня были проблемы с форматированным текстом).
источник
Переопределить
getResources()
в Activity.Установите размер TextView в sp как обычно, как
android:textSize="32sp"
источник
В Android 8 это решение работает для меня
добавить этот код в базовую активность
источник https://stackoverflow.com/a/57225687/7985871
источник