Размер текста не зависит от изменения размера шрифта - PullRequest
0 голосов
/ 03 октября 2018

Я использую .setTextSize(), чтобы изменить размер текста в зависимости от разрешения экрана.Проблема в том, что когда пользователь меняет размер шрифта в настройках на >normal, мой интерфейс выглядит плохо.

  1. единицы измерения, используемые в этом случае, sp, но могут быть изменены с помощью кода, который будетdp?Это не повлияет на изменение размера шрифта, верно?

  2. Я знаю, что могу использовать float f = getResources().getConfiguration().fontScale;, чтобы получить размер системного шрифта, а затем использовать if-else до .setTextSize() на основеразрешение экрана и размер шрифта, но я также нашел этот фрагмент кода

Configuration mConfiguration = new Configuration(); mConfiguration.fontScale = 1; getResources().getConfiguration().setTo(mConfiguration);

, который должен заставить мое приложение игнорировать размер системного шрифта, но это не такработать на меня.Мало того, что это не работает, но это вызывает мое приложение каждый раз, когда я запускаю Alert Dialog.Так есть ли способ заставить мое приложение игнорировать размер системного шрифта?

Ответы [ 2 ]

0 голосов
/ 03 октября 2018

Самым простым способом должно быть использование dp вместо sp, как вы сказали.

Предостережение заключается в том, что если они изменят масштаб экрана, это изменит масштаб значения dp, простоизменение размера шрифта изменяет масштаб значения sp.

Редактировать: я согласен с Гейб Сечан , что вы никогда не должны этого делать.Вместо этого сделайте ваши представления адаптируемыми к различным размерам.

Например, вместо того, чтобы сделать TextView 25dp в высоту, попробуйте сделать его wrap-content.

Исключением из этого будет, если ваша компаниядал вам иконки в виде файла шрифта, и у вас уже есть большие иконки.Верьте или нет, некоторые дизайнеры поставляют значки в виде файлов .ttf.

0 голосов
/ 03 октября 2018

Вы не должны этого делать.Если пользователь меняет глобальный размер, то это потому, что ему трудно видеть вещи.У них физическая инвалидность, и они пытаются ее компенсировать.Вы не должны пытаться отменить свой выбор.Это не только нелепо, но и означает, что им вообще будет тяжело пользоваться вашим приложением.Это эквивалентно попытке помешать слепому человеку использовать текст в речи в вашем приложении, потому что у вас действительно классная фоновая музыка.Или избавиться от рампы для гандикапа, потому что у вас хорошая лестница.

Либо исправьте ваш макет так, чтобы он хорошо смотрелся при любом размере, либо позвольте пользователю решить, выглядит ли приложение слишком плохо, и уменьшите его размер.Не отменяйте это.

...