2013-05-14 1 views
11

이 질문은 Android App: how to read Font Size under Settings?의 거의 dublicate입니다. 나는 Settings.System.FONT_SCALE을 가리키는 CommonsWare의 대답을 읽었습니다. 그래서 나는이 몇 줄을 썼다 :설정에서 글꼴 크기 읽기

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(); 

내 문제는 내가 항상 내가 안드로이드 4.2.2 장치를 사용하고있어 SettingNotFoundException를 얻을 수 있다는 것입니다. 그건 그렇고 그 코드는 ActivityonCreate 콜백에 있습니다.

나는 또한 그 문제에 대한 봤 거든 같은 코드를 사용하는 약 3 사이트를 발견. 특별 허가가 필요합니까? 나는 또한 허가없이 android.permission.WRITE_SETTINGS 허가를 시도했다. getResources().getDisplayMetrics().scaledDensity

+0

흠, 나는 이것을 읽어야한다고 확신하지 못합니다. sp 단위를 사용하는 한 시스템에서 확장을 수행하지 않습니까 ?? – Teovald

+0

글쎄요. 저 스케일 팩터로 수정해야 할 그래픽 버그가 있습니다. – rekire

답변

27

: 그러나 사용의 FONT_SCALE 그래서 난 그 Configuration 클래스에 대한 확인이

/** @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; 
    } 
} 

을 어디에 문서는 getResources().getConfiguration()을 가리 킵니다. 그래서 나는 다음을 사용하여 코드를 고쳤다.

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

당신은 아마 사용할 수 있습니다 - 난 그냥 Settings.System의 소스 코드에서이 기능을 찾을 http://developer.android.com/reference/android/util/DisplayMetrics.html#scaledDensity

+1

아니요 상수 값입니다. 내 장치에서는 항상 '1.33'입니다. 나는 그것을 발견하기 전에'FONT_SCALE'을 발견했습니다. – rekire

+0

어떤 장치가 있습니까? Nexus 7을 추측 하시겠습니까? – FunkTheMonk

+0

네, Nexus 7은 알려진 버그입니까? – rekire

3

글꼴 크기에 따라 시스템 글꼴을 설정할 수있다.

예 : 거대한 글꼴 크기가 2.0 인 경우 다음과 같이 설정할 수 있습니다.

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

하는 (DEF 떠, 컨텐트 리졸버 ContentResolver CR, 문자열 이름)을 공공 정적 플로트 getFloat의 끝에 PARAM "데프을 떠"추가

예 :

규모 = android.provider.Settings .System.getFloat (getActivity(). getContentResolver(), android.provider.Settings.System.FONT_SCALE, 1f);