Размер текста не зависит от изменения размера шрифта

Я использую .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 ответа

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

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

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

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

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

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

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

Другие вопросы по тегам