为了便于阅读,我想在我的应用程序中实现可调整的文本大小-我的很多用户都要求这样做。这个想法是,用户将指示对较大或较小文本的首选项,我将其存储在SharedPreference中,然后在每次加载新活动时都将使用该值。
显然,每当初始化活动的布局时,我都可以加载每个显示文本的视图,然后按名称更改所有视图的文本大小,但这似乎很冗长,容易出错并且难以维护。相反,我宁愿根据现有尺寸甚至更好的现有样式来增加/减小尺寸(这样,如果我愿意,则12可以变成16,而20可以变成30)。
我认为在理想的世界中,我将能够在调用setContentView之前加载所有XML定义的样式,对其进行更改,“保存”,并使这些更改从那时起对我加载的布局生效。阅读更多内容后,这似乎是不可能的:“ Android SDK工具在构建时将应用程序的资源编译为应用程序二进制文件”,然后在Resources类或AssetManager类中没有任何内容表明我可以在运行时更改这些样式,时间。
这似乎使我无法遍历每个onCreate的布局,查找与该值相关的每个视图的文本大小,并将文本大小设置为大于或等于2 sp(根据屏幕密度确定sp)。 。
有人对此有任何想法吗?也许你们当中有些人曾经经历过这个?
最佳答案
尝试创建一个主题。
http://developer.android.com/guide/topics/ui/themes.html
主题可以应用于整个活动。您可以使用Activity的setTheme
应用主题。
http://developer.android.com/reference/android/content/ContextWrapper.html#setTheme(int)