新的需求(可參見 微信和QQ改變字體):
- app 字體不隨著系統(tǒng)字體大小變化
- app 設(shè)置中有設(shè)置字體大小的開關(guān),變大以后,整個 app 字體變大。
解決方案:(字體需要采用 dp 為單位,不能使用 sp 為單位)
- 解決1. 在 activity 和 fragment 的基類中,修改屬性 fontScale 來實現(xiàn)的
private void initFontScale() {
Configuration configuration = getResources().getConfiguration();
configuration.fontScale = (float) 1;
//0.85 小, 1 標準大小, 1.15 大,1.3 超大 ,1.45 特大
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
metrics.scaledDensity = configuration.fontScale * metrics.density;
getBaseContext().getResources().updateConfiguration(configuration, metrics);
}
- 解決2:通過設(shè)置獲取到一個默認字體大小的倍數(shù),然后保存到 SharePreference 中,然后重啟 activity ,加載控件的時候,讓控件默認字體大小乘以存儲的倍數(shù)
鏈接:http://www.cnblogs.com/xqxacm/p/5779762.html
- 解決3: 通過抽取為 style ,在設(shè)置中修改大小,然后重啟 app,通過給 activity 設(shè)置 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