2013-02-28 3 views
6

इस विधि प्रलेखन में यह लिखा है कि:कैसे Canvas.drawText() वास्तव में पाठ खींचता है?

x The x-coordinate of origin for where to draw the text 
y The y-coordinate of origin for where to draw the text 

लेकिन यह दिशा इस पाठ तैयार की है के बारे में कुछ नहीं कहा। मुझे पता है कि पाठ मूल ऊपर से ली गई है, लेकिन जब मैं निम्नलिखित तर्क देते हैं, अपने पाठ में कटौती हो जाता है:

canvas.drawText(displayText, 0, canvas.getHeight(), textPaint); 

अलावा, मैं Align.LEFT (जिसका अर्थ है कि पाठ तैयार की है उपयोग कर रहा हूँ मान एक्स, वाई उत्पत्ति के दाईं ओर)

तो सही तर्क क्या होना चाहिए (मान लीजिए कि मैं निश्चित संख्याओं का उपयोग नहीं करना चाहता)?

+0

शायद यही वह है जिसे आप ढूंढ रहे हैं (उत्तर पर टिप्पणी देखें)। http://stackoverflow.com/questions/10606410/android-canvas-drawtext-y-position-of-text –

+0

टेक्स्ट कैसे कट जाता है? क्या कोई पाठ भी दिख रहा है? – Barney

+0

यदि आप yv मान को canvas.getHeight()/2 पर सेट करने का प्रयास कर रहे हैं, तो क्या यह सही ढंग से मध्य में दिखाई देने वाला टेक्स्ट दिखाता है? साथ ही, आपको यह कहना चाहिए कि आप अधिक ठोस रूप से क्या हासिल करना चाहते हैं। – Barney

उत्तर

2

यह है कि मैं क्या अंत में प्रयोग किया जाता है:

@Override 
protected void onDraw(Canvas canvas) { 
    super.onDraw(canvas); 
    if (textAlignment == Align.CENTER) { 
     canvas.drawText(displayText, canvas.getWidth()/2, canvas.getHeight()-TEXT_PADDING, textPaint); 
    } 
    else if (textAlignment == Align.RIGHT) { 
     canvas.drawText(displayText, canvas.getWidth()-TEXT_PADDING, canvas.getHeight()-TEXT_PADDING, textPaint); 
    } 
    else if (textAlignment == Align.LEFT) { 
     canvas.drawText(displayText, TEXT_PADDING, canvas.getHeight()-TEXT_PADDING, textPaint); 
    } 
    //canvas.drawRect(0, 0, canvas.getWidth(), canvas.getHeight(), p); 
} 

दो टिप्पणियां:

  1. TEXT_PADDING एक डी पी आयाम मैं कार्यावधि में पिक्सल में कन्वर्ट (मेरे मामले 3DP में) है।
  2. आप डीबग के लिए अपने कैनवास के चारों ओर रेक्ट खींचने के लिए अंतिम पंक्ति को अन-टिप्पणी कर सकते हैं।
2

शायद तुम देखने के लिए निम्नलिखित स्निपेट का उपयोग कर सकते है अगर इसकी काम कर रहे हैं या नहीं:

int width = this.getMeasuredWidth()/2; 
int height = this.getMeasuredHeight()/2; 
textPaint.setTextAlign(Align.LEFT); 
canvas.drawText(displayText, width, height, textPaint); 

चौड़ाई और ऊंचाई सिर्फ मेरे मामले में मनमाने ढंग से गणना कर रहे हैं।

+0

यह कट जाता है, कृपया मेरी टिप्पणी देखें .. –

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