Android 我可以在运行时全局增加所有UI小部件的文本大小吗?

Android 我可以在运行时全局增加所有UI小部件的文本大小吗?,android,layout,accessibility,Android,Layout,Accessibility,为了可读性,我想在我的应用程序中实现可调整的文本大小——我的很多用户都要求这样做。其思想是,用户将指示对较大或较小文本的偏好,我将其存储在SharedReference中,然后在加载新活动时使用该值 显然,我可以在初始化活动布局时加载每个显示文本的视图,然后按名称更改所有视图上的文本大小,但这似乎冗长、容易出错且难以维护。相反,我更愿意根据现有的大小或更好的现有样式来增加/减少大小(如果我愿意,12个可以变成16个,20个可以变成30个) 我认为在我的理想世界中,我将能够在调用setConten

为了可读性,我想在我的应用程序中实现可调整的文本大小——我的很多用户都要求这样做。其思想是,用户将指示对较大或较小文本的偏好,我将其存储在SharedReference中,然后在加载新活动时使用该值

显然,我可以在初始化活动布局时加载每个显示文本的视图,然后按名称更改所有视图上的文本大小,但这似乎冗长、容易出错且难以维护。相反,我更愿意根据现有的大小或更好的现有样式来增加/减少大小(如果我愿意,12个可以变成16个,20个可以变成30个)

我认为在我的理想世界中,我将能够在调用setContentView之前加载所有XML定义的样式,对它们进行修改,“保存”它们,并使这些修改从那时起对我加载的布局生效。再读一点,这似乎是不可能的:“Android SDK工具在构建时将应用程序的资源编译成应用程序二进制文件”,然后在resources类或下面的AssetManager类中没有任何内容表明我可以在运行时更改这些样式

这似乎让我在每个onCreate中遍历我的布局,找到与该值相关的每个视图的文本大小,并设置文本大小,比如说2 sp更大或更小(根据屏幕密度计算sp)

有人对此有什么想法吗?也许你们中的一些人以前也经历过这种情况?

试着创建一个主题

主题可以应用于整个活动。您可以使用活动的
setTheme
应用主题


)

这看起来不错,谢谢。对于我的情况,唯一需要注意的是,它只能在内容中实例化视图之前应用,因此当有人请求新的字体大小时,除非我重新加载当前活动,否则它不会生效。这就是android管理资源的方式。这就是为什么当你改变方向时,android会破坏并重新启动你的应用。。。