Я хотел бы реализовать настраиваемый размер текста в своем приложении для удобства чтения - многие мои пользователи запросили его. Идея состоит в том, что пользователь будет указывать предпочтение более крупному или меньшему тексту, я сохраню его в SharedPreference, а затем я буду использовать это значение всякий раз, когда загружаю новое действие.
Очевидно, что я мог загружать каждое представление, отображающее текст, всякий раз, когда я инициализирую макет действия, а затем изменяю размер текста на все из них по имени, но это кажется многословным, подверженным ошибкам и сложным в обслуживании. Я предпочел бы вместо этого увеличить/уменьшить размер на основе существующего размера или даже лучшего существующего стиля (так что, если бы я позаботился, 12 могли бы стать 16, а 20 могли бы стать 30).
Я думаю, что в своем идеальном мире я мог бы загружать все свои XML-определенные стили перед вызовом setContentView, изменять их, "сохранять" их и вносить изменения в макеты, которые я загружаю с этой точки вперед. Прочитав немного больше, это кажется невозможным: "Инструменты Android SDK скомпилируют ваши ресурсы приложений в бинарном приложении во время сборки", а затем в классе "Ресурсы" или классе AssetManager нет ничего, что предполагает, что я могу изменить эти стили при запуске, время.
Кажется, это оставляет меня с прохождением моего макета в каждом onCreate, нахождением текстового размера каждого представления, для которого это значение имеет значение, и установки размера текста, который, скажем, 2 sp больше или меньше (вычисление sp на основе плотности экрана),
У кого-нибудь есть мысли по этому поводу? Может, некоторые из вас прошли через это раньше?
Попробуйте создать тему.
http://developer.android.com/guide/topics/ui/themes.html
Темы могут быть применены ко всей деятельности. Вы можете применить тему, используя setTheme
of Activity.
http://developer.android.com/reference/android/content/ContextWrapper.html#setTheme (int)