android - TextView.setTextSize असामान्य रूप से व्यवहार करता है - विभिन्न स्क्रीन के लिए गतिशील रूप से टेक्स्टव्यू के टेक्स्ट आकार को कैसे सेट करें




3 Answers

यहां अंतर यह है कि setTextSize(int size) विधि में, डिफ़ॉल्ट रूप से इकाई प्रकार "sp" या "स्केल किए गए पिक्सेल" है। यह मान प्रत्येक स्क्रीन घनत्व (ldpi, mdpi, hdpi) के लिए एक अलग पिक्सेल आयाम होगा।

getTextSize() , दूसरी ओर, पाठ के वास्तविक पिक्सेल आयाम देता है।

आप इकाई प्रकार निर्दिष्ट करने के लिए setTextSize(int unit, float size) का उपयोग कर सकते हैं। इसके लिए निरंतर मान TypedValue क्लास में पाए जा सकते हैं, लेकिन उनमें से कुछ हैं:

TypedValue.COMPLEX_UNIT_PX   //Pixels

TypedValue.COMPLEX_UNIT_SP   //Scaled Pixels

TypedValue.COMPLEX_UNIT_DIP  //Device Independent Pixels

कॉलिंग TextView.setTextSize() असामान्य रूप से काम कर रहा है। सेट करने के लिए कॉल के ठीक बाद, अगर हमें setTextSize मिलता है getTextSize यह एक बहुत अधिक मूल्य लौटाता है जिसे हमने पहले सेट किया था।

यहां हम क्या कर रहे हैं:

zoomControl.setOnZoomInClickListener(new OnClickListener() {
    public void onClick(View view) {
        float size = mViewShabad.getTextSize() + 1;
        textView.setTextSize(size);
    }
});

क्या किसी ने इसे पहले कभी देखा है?




यदि फ़ॉन्ट का आकार बदलना है, तो कुछ कारण त्रुटि दिखाते हैं, तो आप निम्नानुसार कर सकते हैं:

setTextSize(TypedValue.COMPLEX_UNIT_DIP, 15.f);



संक्षेप में, यदि आप अपने ग्रंथों को ज़ूम आउट करना चाहते हैं

float size = mViewShabad.getTextSize()*1.1f;
textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, size);

चूंकि GetTextSize () UNIT_PX लौटाता है, तो हमें UNIT_PX का उपयोग करना चाहिए




Related

android textview