2012-12-27 16 views
6

शामिल हैं, मुझे कहीं भी नहीं मिल रहा है कि टेक्स्टव्यू में getTextSize() को मापने के तरीके का उल्लेख किया गया है। दृश्य परीक्षणों से यह अवरोधक समेत प्रतीत नहीं होता है, लेकिन ऐसा लगता है कि आरोही शामिल हैं। यह आधार रेखा से बिल्कुल शुरू नहीं होता है।एंड्रॉइड टेक्स्ट व्यू getTextSize() इसमें अवरोधक, आरोही

http://en.wikipedia.org/wiki/Descender

यह बात लेकिन गूगल से रोमेन लड़का के निकटतम उल्लेख सिर्फ सवाल का वह हिस्सा पर ध्यान नहीं देता है।

http://www.mail-archive.com/[email protected]/msg08514.html

मैं इस की जरूरत के रूप में मैं यौगिक ड्रॉएबल उपयोग कर रहा हूँ और मैं विभिन्न उपकरणों पर पाठ करने के लिए drawable संरेखित करने के लिए सक्षम होना चाहिए के रूप में।

यहाँ कोड मैं एक चक्र है कि छू लेती है drawable एक यौगिक पर परीक्षण करने के लिए प्रयोग किया जाता है किनारों

tvData.setTextSize(TypedValue.COMPLEX_UNIT_PX, 100); 
tvData.setText("agB5ãÂ"); 

int size = (int)tvData.getTextSize(); 
Drawable img = getResources().getDrawable(R.drawable.circle_white_full_72).mutate(); 
img.setBounds(0 , 0 , size , size); 
tvData.setCompoundDrawables(null, null, img, null); 

यहाँ परिणाम http://i.imgur.com/zUEzB.png

है कि आप देख सकते के रूप में यह descenders उपयोग करने के लिए प्रतीत नहीं होता और ascenders।

यहाँ के साथ छवि पर स्थानांतरित कर, drawable छवि है अगर दूसरों जब पाठ का आकार का 80% तक छवि को बदलने का उपयोग कर

int size = (int)tvData.getTextSize() *80/100; 

यहाँ परिणाम है http://i.imgur.com/Yhf8b.png

परीक्षण करना चाहते हैं 100% छवि के शीर्ष। हो सकता है कि setCompoundrawables यह स्वयं स्केलिंग है

enter image description here

मैं फ़ॉन्ट और drawable के मध्य बिन्दुओं को मापने की कोशिश की और यह बंद है कर रही है। यहां enter image description here

अंततः मैंने खींचने योग्य 50 पिक्सल को बाईं ओर ले जाया, और फिर आउटपुट को माप दिया और यह बेसलाइन आधार रेखा की आधार रेखा की आधा ऊंचाई थी, क्योंकि setTextSize 100px पर सेट किया गया था।

एंड्रॉइड को यौगिक खींचने योग्य और स्केल करने के लिए कुछ अन्य लेआउट का उपयोग करना चाहिए। शायद मुझे इसके लिए एक और सवाल बनाना चाहिए। आधार रेखा पर आधार रेखा को हाइलाइट करने वाली एक छवि यहां दी गई है। enter image description here

+0

मुझे पता है कि फ़ॉन्ट ऊंचाई ऊंचाई "आरोही शामिल है, लेकिन अवरोही नहीं है", लेकिन मुझे आपके प्रश्न का उत्तर देने के लिए एक आधिकारिक संदर्भ नहीं मिल रहा है। तो अब के लिए, अचूक साक्ष्य करना होगा: मैंने हमेशा "फ़ॉन्ट ऊंचाई" को समझ लिया है जिसका अर्थ है कि आप वर्णन करते हैं। – Barend

+0

इसके बारे में सोचने के लिए आओ, "बेसलाइन से बेसलाइन" समकक्ष है और डोमेन के भीतर अधिक समझ में आता है। – Barend

+0

@ बरेंड गारवेलिंक मुझे विश्वास है कि अग्रणी होगा। – kcoppock

उत्तर

3

कुछ प्रकाश परीक्षण से, यह चढ़ाई से वंश (पाठ आकार = वंश - चढ़ाई) से प्रतीत होता है। सत्यापित करने के लिए एक TextPaint के साथ कुछ डिबगिंग था, और सिर्फ एक छोटे से अधिक विशिष्ट, मैंने किया था:

Paint.FontMetricsInt metrics; 
for(int i = 1; i < 100; i++) { 
    mTextPaint.setTextSize(i); 
    metrics = mTextPaint.getFontMetricsInt(); 
    if((metrics.descent - metrics.ascent) != i) Log.v("type", "Not equal"); 
} 

और यह प्रत्येक मान के लिए सही बने रहे।

+0

यहां परीक्षण है जो मैंने tvData.setTextSize (TypedValue.COMPLEX_UNIT_PX, 100) किया है; \t \t tvData.setText ("agb5ãÂ"); \t \t \t \t int आकार = (int) tvData.getTextSize(); \t \t Drawable img = getResources()। GetDrawable (R.drawable.circle_white_full_72) .mutate(); \t \t img.setBounds (0, 0, आकार, आकार); \t \t tvData.setCompoundDrawables (शून्य, शून्य, img, शून्य); परिणाम http://i.imgur.com/zUEzB.png जैसा कि आप देख सकते हैं कि यह अवरोधकों और ascenders का उपयोग प्रतीत नहीं होता है। – pt123

+0

मैंने अपने प्रश्न कोड को मुख्य प्रश्न – pt123

+1

'metrics.descent - metrics.ascent' में जोड़ा है, यही वही है जो मुझे चाहिए! – amram99

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