Размер текста не зависит от изменения размера шрифта
Я использую .setTextSize()
изменить размер текста в зависимости от разрешения экрана. Проблема в том, что пользователь меняет размер шрифта в настройках на >normal
мой интерфейс выглядит плохо.
Единицы, используемые в этом случае
sp
, но можно ли это изменить с помощью кода, который будетdp
? Это не повлияет на изменение размера шрифта, верно?Я знаю, что могу использовать
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.
Вы не должны этого делать. Если пользователь изменяет глобальный размер, то это потому, что ему трудно видеть вещи. У них физическая нетрудоспособность, и они пытаются ее компенсировать. Не стоит пытаться отменить свой выбор. Это не только нелепо, но и означает, что им вообще будет трудно использовать ваше приложение. Это эквивалентно попытке помешать слепому человеку использовать текст в речи в вашем приложении, потому что у вас действительно классная фоновая музыка. Или избавиться от пандуса для инвалидов, потому что у вас хорошая лестница.
Либо исправьте макет, чтобы он выглядел хорошо при любом размере, либо предоставьте пользователю возможность решить, выглядит ли приложение слишком плохо, и уменьшите его размер. Не отменяйте это.