如何为整个应用程序创建字体大小选项(小、正常、大)? [复制]
Posted
技术标签:
【中文标题】如何为整个应用程序创建字体大小选项(小、正常、大)? [复制]【英文标题】:How to create Font size options (Small, Normal, Large ) for the entire app? [duplicate] 【发布时间】:2017-10-15 14:26:01 【问题描述】:我希望有一个设置活动,用户可以在其中更改整个应用程序的文本字体大小...我也只有一个 textview 可以使工作变得容易,但我无法弄清楚我。
例如,我有一个显示文本的活动,它被称为 (Contentactivity)
然后会有另一个名为 (Settingactivity) 的活动,用户可以从这里更改 Contentactivity 文本的字体大小。
我希望它很清楚,非常感谢您的帮助。
【问题讨论】:
将 xml 中的文本大小设置为“sp”而不是“dp”。然后从设置更改文本大小 谢谢我的朋友@Phil3992 这就是我正在寻找的东西,我会尝试一下:) @ashish 我总是使用 sp 格式,但我想以编程方式设置字体大小选项。谢谢你:) 您可以使用以下代码Settings.System.putFloat(getBaseContext().getContentResolver(), Settings.System.FONT_SCALE, (float) 1.0);
更改系统字体,然后在清单文件<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
中授予权限
【参考方案1】:
设置大小时,只需使用sp
而不是dp
。这将确保您的文本始终根据屏幕大小和用户在设置中的偏好进行调整。
查看SO Answer了解更多详情。
【讨论】:
【参考方案2】:您可以使用以下代码更改系统字体
Settings.System.putFloat(getBaseContext().getContentResolver(),
Settings.System.FONT_SCALE, (float) 1.0);
然后在清单文件中授予权限
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
【讨论】:
这只能给基于系统的应用程序。【参考方案3】:我是这样做的:
为每个想要的文本大小创建一个样式:
<style name="RegularSizedText">
<item name="text_size">20sp</item>
</style>
<style name="LargeSizedText">
<item name="text_size">35sp</item>
</style>
R.style.RegularSizedText
0、R.style.LargeSizedText
1...) - 之后不得更改它,否则它会损坏更新应用程序时的设置,您只能附加参数,但不能删除/插入任何参数
在您的共享属性(或任何其他参数存储系统)中,将当前字体大小的样式的编号 ID - 添加到您的设置活动中
在你应用的每个Activity中,把这段代码放在onCreate
方法中:
getTheme().applyStyle(myStyle, false);
其中 myStyle 是与存储参数对应的样式 ID(因此,如果用户选择了字体参数 #0,它将是 R.style.RegularSizedText
)
您绝不能直接存储样式 ID,因为它会在更新应用程序时被破坏(Android R ID 从一个版本到另一个版本不同)。
【讨论】:
以上是关于如何为整个应用程序创建字体大小选项(小、正常、大)? [复制]的主要内容,如果未能解决你的问题,请参考以下文章