2012-12-23 27 views
7

मेरे पास एक एंड्रॉइड ऐप है जिसके लिए उपयोगकर्ता कुछ फ़ॉन्ट समायोजन की आवश्यकता है यदि उपयोगकर्ता अपने फ़ॉन्ट आकार को अतिरिक्त बड़े (सेटिंग -> डिस्प्ले -> फ़ॉन्ट आकार 4.0 और उसके बाद) में सेट करता है।
मेरी layout.xml में मैं एक बटनउपयोगकर्ता फ़ॉन्ट आकार चयन

android:textAppearance="?android:attr/textAppearanceMedium" 
android:textStyle="bold" 
android:typeface="sans" 
सेटअप करने के लिए के लिए इसी तरह पंक्तियाँ:

वहाँ मुझे बताने की क्या उपयोगकर्ता के फ़ॉन्ट आकार वरीयता

अपडेट किया गया है के लिए एक आसान तरीका है

ध्यान दें कि मैं सीधे फ़ॉन्ट आकार सेट नहीं कर रहा हूं। यह लेआउट काम करता है और अतिरिक्त बड़े सेटिंग को छोड़कर, सभी मामलों में अच्छा दिखता है। उस स्थिति में, अंतरिक्ष सीमाओं के कारण, यह बटन के पाठ को 2 लाइनों तक लपेटने का कारण बनता है।

मेरा लक्ष्य इतना है कि यह

उत्तर

6

वहाँ एक FONT_SCALE पैरामीटर आप के लिए प्रणाली क्वेरी करने के लिए सक्षम होना चाहिए है लपेट नहीं करता अतिरिक्त बड़े के मामले में एक मामूली शब्दों परिवर्तन करने के लिए है। मैं इसे अपने आप का इस्तेमाल किया है, लेकिन मैं पुन: प्राप्त करने कल्पना अपने मूल्य इस तरह कुछ हद तक दिखेगा:

float fontScale = Settings.System.getFloat(context.getContentResolver(), Settings.System.FONT_SCALE) 

हालांकि, मैं यह भी कहना है कि आम तौर पर आप यह मान के साथ सीधे निपटने नहीं किया जाना चाहिए चाहते हैं। इसके अलावा, पाठ सामग्री के लिए sp इकाइयों का उपयोग करें ताकि आपको उपयोगकर्ता द्वारा पसंदीदा फ़ॉन्ट आकारों को समायोजित करने की चिंता न करें, बल्कि सिस्टम को इसे संभालने दें।

भी उल्लेख करने के लिए: एसपी के बारे में Why should we use sp for font sizes in Android?

+0

अच्छा बिंदु, लेकिन इस मामले में नहीं प्रासंगिक, सवाल – Noah

+0

में अद्यतन जानकारी fontScale ExtraLarge के लिए 1.3 वापस लौटते हैं। इसके लिए निरंतर खोजना अच्छा लगेगा, लेकिन मैं इसे अभी उपयोग कर सकता हूं। – Noah

+0

अपने कोड को मेरे लिए एक 'सेटिंग नॉटफाउंड अपवाद: font_scale' फेंक दें, लेकिन मुझे यकीन है कि आपका और मेरा कोड सही है (एंड्रॉइड 4.2.2) – rekire