解決 Android 系統字體影響布局問題
2017/10/31 於教育訓練後遇到的問題,某些使用者將系統預設字體設定為 [極大] ,或者其他導致佈局混亂的大小,導致某些功能無法正常使用(被遮掩)。
解決辦法是 Configuration
- 藉由取得系統
Configuration
以及其fontScale
來做判斷,進而取得控制佈局的可能。 - 以下直接以程式碼作範例:
Configuration configuration = getResources().getConfiguration();
Resources res = getResources();
if(configuration.fontScale>=1.35)
{
Configuration newconfig = new Configuration();
newconfig.setToDefaults();
newconfig.fontScale=1.2f;
res.updateConfiguration(newconfig,res.getDisplayMetrics());
}
/*
* fontScale = 1f (正常)
* fontScale = 1.2f (大)
* fontScale = 1.35f (極大)
*/
- 在
if
判斷式中我設定為大於1.35
就進行縮小Scale
的行為,主要是因為當Scale
大於1.35
時,我的佈局會產生影響使用者體驗的問題,所以判斷式成立後,就直接將Scale
縮小至1.2
倍,如此即解決該問題。