2013-05-14 176 views
11

這個問題是幾乎dublicate Android App: how to read Font Size under Settings?我看了CommonsWare的答案,它指向使用Settings.System.FONT_SCALE。所以我寫這幾行字:從設置中閱讀字體大小

float scale = -66.6f; 
try { 
    scale = android.provider.Settings.System.getFloat(getContentResolver(), 
            android.provider.Settings.System.FONT_SCALE); 
} catch(SettingNotFoundException e) { 
    Log.e(getClass().getSimpleName(), "Error: ", e); 
} 
Toast.makeText(this, "scale=" + scale, Toast.LENGTH_LONG).show(); 

我的問題是,我總是得到SettingNotFoundException我使用的是Android 4.2.2設備。順便說一下,我的代碼在ActivityonCreate回調中。

我也搜索了這個問題,發現了大約3個使用相同代碼的網站。是否需要特殊許可?我也嘗試了許可android.permission.WRITE_SETTINGS沒有成功。

+0

嗯,我不確定你需要閱讀這個。只要你使用SP單元,系統不會爲你擴展嗎? – Teovald 2013-05-14 14:09:05

+0

當然,但我有一些圖形錯誤,我需要修復這個比例因子。 – rekire 2013-05-14 14:22:27

回答

27

我只是在Settings.System源代碼中發現了這個功能:

/** @hide */ 
public static void getConfigurationForUser(ContentResolver cr, 
             Configuration outConfig, int userHandle) { 
    outConfig.fontScale = Settings.System.getFloatForUser(
     cr, FONT_SCALE, outConfig.fontScale, userHandle); 
    if (outConfig.fontScale < 0) { 
     outConfig.fontScale = 1; 
    } 
} 

然而有在使用的FONT_SCALE所以我檢查爲Configuration類,其中文件指向getResources().getConfiguration()。所以我通過使用下列代碼修復我的代碼:

float scale = getResources().getConfiguration().fontScale; 
3

您可以根據字體比例設置系統字體。

例如:對於巨大的字體比例爲2.0,那麼你可以設置如下。

Configuration config = new Configuration(); 
config.fontScale = 2.0f; 
getResources().getConfiguration().setTo(config); 
0

添加 「浮動DEF」 參數到 公共靜態浮動getFloat的端部(ContentResolver的CR,字符串名稱,浮法DEF)

實施例:

規模= android.provider.Settings .System.getFloat(getActivity()。getContentResolver(), android.provider.Settings.System.FONT_SCALE,1f);