2012-11-07 18 views
119

मैं अपने आवेदन में अपना टेक्स्ट आकार निर्दिष्ट करना चाहता हूं, लेकिन मुझे ऐसा करने में कोई समस्या है।एंड्रॉइड एप्लिकेशन में टेक्स्टव्यू का फ़ॉन्ट आकार मूल सेटिंग्स से फ़ॉन्ट आकार बदलने पर बदलता है

जब मैं डिवाइस सेटिंग्स में फ़ॉन्ट आकार बदलता हूं, तो मेरे आवेदन का फ़ॉन्ट आकार TextView भी बदलता है।

+1

कृपया कुछ कोड डालें। –

+2

यह डिफ़ॉल्ट व्यवहार है कि यदि आप अपने डिवाइस के मूल फ़ॉन्ट का फ़ॉन्ट आकार बदलते हैं तो यह आपके एप्लिकेशन फ़ॉन्ट आकार पर भी प्रभाव डालता है। –

+0

आप यहां से जवाब प्राप्त कर सकते हैं http://stackoverflow.com/questions/16706076/font-size-and-images-for-different-devices/16910589#16910589 –

उत्तर

161

दरअसल, सेटिंग फ़ॉन्ट आकार sp में केवल आकारों को प्रभावित करता है। तो आपको केवल sp के बजाय dp में textSize परिभाषित करने की आवश्यकता है, तो सेटिंग आपके ऐप में टेक्स्ट आकार नहीं बदलेगी।

यहाँ प्रलेखन के लिए एक लिंक है: Dimensions

हालांकि कृपया ध्यान दें कि अपेक्षित व्यवहार है कि सभी क्षुधा में फोंट उपयोगकर्ता की प्राथमिकताओं का सम्मान है। ऐसे कई कारण हैं जो उपयोगकर्ता फ़ॉन्ट आकार को समायोजित करना चाहते हैं और उनमें से कुछ चिकित्सा-दृष्टिहीन लोगों को भी हो सकते हैं। sp के बजाय dp का उपयोग टेक्स्ट के लिए आपके कुछ ऐप के उपयोगकर्ताओं के खिलाफ अनिच्छुक रूप से भेदभाव कर सकता है।

+7

एक लंबे समय पहले मैं जानना चाहता था कि जब मुझे 'एसपी' का उपयोग करना चाहिए और जब मुझे 'डीपी' का उपयोग करना चाहिए तो कोई नियम था या नहीं। मुझे यहां वास्तव में अच्छी प्रतिक्रिया मिली है: http://stackoverflow.com/questions/11638691/android-sp-vs-dp-texts-what-would-adjust-the-scale-and-what-is-the-philosoph – Sam

39

dimension संसाधनों का प्रकार जैसे आप string संसाधनों का उपयोग करें (DOCS) का उपयोग करें।

अपने dimens.xml फ़ाइल में घोषित अपने आयाम चर:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <dimen name="textview_height">25dp</dimen> 
    <dimen name="textview_width">150dp</dimen> 
    <dimen name="ball_radius">30dp</dimen> 
    <dimen name="font_size">16sp</dimen> 
</resources> 

तो फिर तुम इस तरह इन मानों का उपयोग कर सकते हैं:

<TextView 
    android:layout_height="@dimen/textview_height" 
    android:layout_width="@dimen/textview_width" 
    android:textSize="@dimen/font_size"/> 

आप स्क्रीन के विभिन्न प्रकार के लिए अलग dimens.xml फ़ाइलों घोषणा कर सकते हैं। ऐसा करने से विभिन्न उपकरणों पर आपके ऐप की वांछित रूप की गारंटी होगी।

जब आप android:textSize निर्दिष्ट नहीं करते हैं तो सिस्टम डिफ़ॉल्ट मानों का उपयोग करता है।

+1

मुद्दा स्क्रीन नहीं है। यह एंड्रॉइड डिस्प्ले सेटिंग्स में चयनित मूल फ़ॉन्ट आकार है जो –

22

यह भी ध्यान रखें कि यदि टेक्स्टसाइज कोड में सेट है, तो textView.setTextSize(X) पर कॉल करना संख्या (एक्स) को एसपी के रूप में व्याख्या करता है। डीपी में मान सेट करने के लिए setTextSize(TypedValue.COMPLEX_UNIT_DIP, X) का उपयोग करें। आप textSize संपत्ति के बारे में अधिक जानना चाहते हैं, तो

android:textSize="32sp" 

, आप जाँच कर सकते हैं Android developer documentation:

125

सबसे आसान ऐसा करने के लिए बस निम्नलिखित की तरह कुछ का उपयोग करने के लिए है।

+1

का उल्लेख किया गया मुद्दा है, वास्तव में टीएस के पास 'डीपी' – Boy

+5

के बजाय 'एसपी' का उपयोग करके समस्या है, मुझे अभी भी पता नहीं है कि 100 अपवॉट क्यों हैं। क्योंकि अगर हम आवेदन में सेट टेक्स्टिक्स के लिए एसपी का उपयोग करते हैं। फिर हम सेटिंग में फ़ॉन्ट आकार बदलते हैं, पाठ में टेक्स्टव्यू भी बदल जाता है –

10

डीआईपी या एसपी को कोड द्वारा फिर से निर्दिष्ट करना एक अच्छी बात नहीं है जब पहले से ही dimen.xml फ़ाइल में परिभाषित किया गया हो।

मुझे लगता है कि सबसे अच्छा विकल्प PX उपयोग करने के लिए जब एक dimen.xml मूल्य का उपयोग कर रहा है: परिवर्तन के बिना

tv.setTextSize(TypedValue.COMPLEX_UNIT_PX, getResources().getDimensionPixelSize(R.dimen.txt_size)); 

इस तरह, आप अगर dimen.xml फ़ाइल में आवश्यक सपा के लिए डीपी से स्विच कर सकते हैं कोई कोड

1

ड्राफ्ट पैरा बजाय एस.पी. textSize में इस हल में फ़ॉन्ट आकार का उपयोग करना।

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