新的需求(可參見 微信和QQ改變字體):
- app 字體不隨着系統字體大小變化
- app 設置中有設置字體大小的開關,變大以后,整個 app 字體變大。
解決方案:(字體需要采用 dp 為單位,不能使用 sp 為單位)
- 解決1. 在 activity 和 fragment 的基類中,修改屬性 fontScale 來實現的
1 private void initFontScale() { 2 Configuration configuration = getResources().getConfiguration(); 3 configuration.fontScale = (float) 1; 4 //0.85 小, 1 標准大小, 1.15 大,1.3 超大 ,1.45 特大 5 DisplayMetrics metrics = new DisplayMetrics(); 6 getWindowManager().getDefaultDisplay().getMetrics(metrics); 7 metrics.scaledDensity = configuration.fontScale * metrics.density; 8 getBaseContext().getResources().updateConfiguration(configuration, metrics); 9 }
鏈接:http://www.jianshu.com/p/fafa8a0df5fb
- 解決2:通過設置獲取到一個默認字體大小的倍數,然后保存到 SharePreference 中,然后重啟 activity ,加載控件的時候,讓控件默認字體大小乘以存儲的倍數
鏈接:http://www.cnblogs.com/xqxacm/p/5779762.html
- 解決3: 通過抽取為 style ,在設置中修改大小,然后重啟 app,通過給 activity 設置 theme 進行替換
鏈接:http://blog.sina.com.cn/s/blog_3e333c4a0101igti.html
鏈接:http://blog.csdn.net/dlmu2001/article/details/7414411
鏈接:http://blog.csdn.net/wanjf_912/article/details/7641184
鏈接:http://www.jianshu.com/p/61b79e7f88fc
鏈接:http://hellorheaven.iteye.com/blog/2076403