如何为整个应用程序创建字体大小选项(小,普通,大)?

时间:2017-05-16 13:15:43

标签: android textview font-size

我希望有一个设置活动,用户可以在其中更改整个应用程序的文本字体大小...我也只有一个文本视图,这使得工作变得简单,但我无法理解独自出去。

例如,我有一个显示文本的活动,它被称为(Contentactivity)

然后会有另一个名为(Settingactivity)的活动,用户可以在此处更改Contentactivity文本的字体大小。

我希望它清楚,非常感谢你的帮助。

3 个答案:

答案 0 :(得分:1)

我是这样做的:

  1. 为每个想要的文字大小创建一个样式:

    <style name="RegularSizedText"> <item name="text_size">20sp</item> </style> <style name="LargeSizedText"> <item name="text_size">35sp</item> </style>

  2. 创建文字大小的枚举/地图,将每个样式ID与数字相关联(R.style.RegularSizedText&lt; =&gt; 0,R.style.LargeSizedText&lt; =&gt; 1 ...) - 您必须以后不要更改它或者在更新应用时会破坏设置,你只能附加参数但不能删除/插入任何
  3. 在您的共享属性(或任何其他参数存储系统)中,输入当前字体大小的样式编号ID - 将其添加到您的设置活动中
  4. 在您的应用的每个活动中,将这段代码放在onCreate方法中: getTheme().applyStyle(myStyle, false); 其中myStyle是与存储参数对应的样式ID(因此,如果用户选择字体参数#0,则为R.style.RegularSizedText
  5. 您必须永远不要直接存储样式ID,因为更新应用时它会被破坏(Android R ID从构建到另一个不同)。

答案 1 :(得分:0)

设置尺寸时,只需使用sp代替dp。这样可以保证您的文字始终在设置中根据屏幕尺寸和用户的偏好进行调整。

查看此SO Answer了解更多详情。

答案 2 :(得分:0)

您可以使用以下代码更改系统字体

Settings.System.putFloat(getBaseContext().getContentResolver(), Settings.System.FONT_SCALE, (float) 1.0);

之后在menifest文件中给予权限

<uses-permission android:name="android.permission.WRITE_SETTINGS"/>