2013-05-14 5 views
11

से फ़ॉन्ट आकार पढ़ें यह प्रश्न लगभग 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(); 

मेरे समस्या यह है कि मैं हमेशा मैं एक Android 4.2.2 डिवाइस का उपयोग कर रहा SettingNotFoundException मिलता है। जिस तरह से मैं कोड onCreateActivity का कॉलबैक में हूं।

मैं भी उस समस्या के लिए googled और लगभग 3 साइटों को मिला जो एक ही कोड का उपयोग करता है। क्या कुछ विशेष अनुमति की आवश्यकता है? मैंने सफलता के बिना अनुमति android.permission.WRITE_SETTINGS भी कोशिश की।

+0

हम्म, मुझे यकीन नहीं है कि आपको इसे पढ़ने की आवश्यकता है। जब तक आप एसपी इकाइयों का उपयोग करते हैं तब तक सिस्टम आपके लिए स्केलिंग नहीं करता है ?? – Teovald

+0

अच्छी तरह से यकीन है लेकिन मेरे पास कुछ ग्राफिकल बग हैं जिन्हें मुझे उस स्केल फैक्टर के साथ ठीक करने की आवश्यकता है। – rekire

उत्तर

27

मैं सिर्फ इस समारोह Settings.System के स्रोत कोड में पाया: हालांकि उपयोग में 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

आप शायद इस्तेमाल कर सकते हैं getResources().getDisplayMetrics().scaledDensity - http://developer.android.com/reference/android/util/DisplayMetrics.html#scaledDensity

+1

नहीं यह एक निरंतर मूल्य है। मेरे डिवाइस पर यह हमेशा '1.33' है। मैंने कोशिश की कि मुझे लगता है कि 'FONT_SCALE'। – rekire

+0

आपके पास कौन सा डिवाइस है? नेक्सस 7 का अनुमान लगा रहे हैं? – FunkTheMonk

+0

हाँ नेक्सस 7, क्या यह ज्ञात बग है? – rekire

3

आप फ़ॉन्ट स्केल के अनुसार सिस्टम फ़ॉन्ट सेट कर सकते हैं।

उदाहरण: विशाल फ़ॉन्ट पैमाने 2.0 के लिए आप अनुसरण के रूप में सेट कर सकते हैं।

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

जोड़े सार्वजनिक स्थिर नाव getFloat के अंत में परम "डीईएफ़ तैरने लगते हैं" (ContentResolver करोड़, स्ट्रिंग नाम, डीईएफ़ फ्लोट)

उदाहरण:

पैमाने = android.provider.Settings .System.getFloat (getActivity()। GetContentResolver(), android.provider.Settings.System.FONT_SCALE, 1f);

संबंधित मुद्दे