Могу ли я глобально увеличить размер текста для всех моих виджетов пользовательского интерфейса во время выполнения?

1

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

Очевидно, что я мог загружать каждое представление, отображающее текст, всякий раз, когда я инициализирую макет действия, а затем изменяю размер текста на все из них по имени, но это кажется многословным, подверженным ошибкам и сложным в обслуживании. Я предпочел бы вместо этого увеличить/уменьшить размер на основе существующего размера или даже лучшего существующего стиля (так что, если бы я позаботился, 12 могли бы стать 16, а 20 могли бы стать 30).

Я думаю, что в своем идеальном мире я мог бы загружать все свои XML-определенные стили перед вызовом setContentView, изменять их, "сохранять" их и вносить изменения в макеты, которые я загружаю с этой точки вперед. Прочитав немного больше, это кажется невозможным: "Инструменты Android SDK скомпилируют ваши ресурсы приложений в бинарном приложении во время сборки", а затем в классе "Ресурсы" или классе AssetManager нет ничего, что предполагает, что я могу изменить эти стили при запуске, время.

Кажется, это оставляет меня с прохождением моего макета в каждом onCreate, нахождением текстового размера каждого представления, для которого это значение имеет значение, и установки размера текста, который, скажем, 2 sp больше или меньше (вычисление sp на основе плотности экрана),

У кого-нибудь есть мысли по этому поводу? Может, некоторые из вас прошли через это раньше?

Теги:
accessibility
layout

1 ответ

2
Лучший ответ

Попробуйте создать тему.

http://developer.android.com/guide/topics/ui/themes.html

Темы могут быть применены ко всей деятельности. Вы можете применить тему, используя setTheme of Activity.

http://developer.android.com/reference/android/content/ContextWrapper.html#setTheme (int)

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню