如何以编程方式更改整个应用程序中的字体大小,Android?

我已经创build了字体大小从“8”到“46”的列表的微调。 我可以点击字体大小,并在一个微调,它显示了我。

我的需要是,如果我点击一个微调内的字体大小“26”,那么它应该适用于我的整个项目。 像适用于我的屏幕,Textview外观,Edittext – 粗体/斜体等。再次,如果我点击46尺寸,那么它应该适用于我的整个项目。

我怎么可以通过编程做到这一点?

Solutions Collecting From Web of "如何以编程方式更改整个应用程序中的字体大小,Android?"

可能的解决scheme是创build一个 扩展TextView 的基类 ,并使用这个文本视图类作为编辑文本。 希望你在第一个屏幕上要求尺寸。 无论如何,你在基类中设置文本的大小。 这将解决您的问题。

像你在包com.example中创build这个类,类名是BaseTextView,然后在xml文件中而不是<TextView .../>你将写入<com.example.BaseTextView ... />

希望这可以帮助。

Android文档不是通过用户在应用程序级别的select来全局更改字体大小的最有效方式。

黑魔鬼给出的答案我有一个问题。

问题是许多Android小部件的子类TextView ,如ButtonRadioButtonCheckBox 。 其中一些是TextView间接子TextView ,这使得在这些类中实现自定义的TextView版本非常困难。

然而正如Siddharth Lele在他的评论中指出的那样 ,使用stylesthemes是处理整个应用程序文本大小变化的更好方法。

我们为布局设置样式来控制视图的外观和感觉。 主题基本上只是这些样式的集合。 不过,我们可以使用一个主题只是为了文字大小设置; 没有为每个财产定义价值。 使用主题而不是样式为我们提供了一个巨大的优势:我们可以以编程方式为整个视图设置主题。

theme.xml

 <resources> <style name="FontSizeSmall"> <item name="android:textSize">12sp</item> </style> <style name="FontSizeMedium"> <item name="android:textSize">16sp</item> </style> <style name="FontSizeLarge"> <item name="android:textSize">20sp</item> </style> </resources> 

创build一个类来处理加载我们的喜好:

 public class BaseActivity extends Activity { @Override public void onStart() { super.onStart(); // Enclose everything in a try block so we can just // use the default view if anything goes wrong. try { // Get the font size value from SharedPreferences. SharedPreferences settings = getSharedPreferences("com.example.YourAppPackage", Context.MODE_PRIVATE); // Get the font size option. We use "FONT_SIZE" as the key. // Make sure to use this key when you set the value in SharedPreferences. // We specify "Medium" as the default value, if it does not exist. String fontSizePref = settings.getString("FONT_SIZE", "Medium"); // Select the proper theme ID. // These will correspond to your theme names as defined in themes.xml. int themeID = R.style.FontSizeMedium; if (fontSizePref == "Small") { themeID = R.style.FontSizeSmall; } else if (fontSizePref == "Large") { themeID = R.style.FontSizeLarge; } // Set the theme for the activity. setTheme(themeID); } catch (Exception ex) { ex.printStackTrace(); } } 

最后,通过扩展BaseActivity来创build活动,如下所示:

 public class AppActivity extends BaseActivity{ } 

由于大多数应用程序比inheritanceTextView的TextView或小部件less得多的活动。 这将成倍地增加复杂性,所以这个解决scheme需要更less的代码更改。

感谢Ray Kuhnell

创build一个函数并传递微调器大小值

 void setSize(int size){ ... setTextSize() // on All of the layout texts and views on screen } 

在屏幕上的所有视图和布局文本上调用setTextSize()。

查看这里的文档