मैं एक बहुभाषी पाठ अनुच्छेद की चौड़ाई की गणना करने की कोशिश कर रहा हूं। मेरे ज्ञान के लिए, एंड्रॉइड में ऐसा करने वाला एकमात्र वर्ग स्टेटिकलाउट (या डायनेमिकलाइट) वर्ग है। इस कक्षा का उपयोग करते समय मुझे अपने टेक्स्ट स्निपेट की उचित लंबाई नहीं मिलती है, बल्कि मापा गया आयाम कभी-कभी छोटे आकार के होते हैं और कभी-कभी पाठ आकार के आधार पर अधिक होते हैं।एक बहु लाइन स्ट्रिंग की चौड़ाई को विश्वसनीय रूप से निर्धारित करने के लिए कैसे?
तो मैं मूल रूप से एक मल्टीलाइन टेक्स्ट स्ट्रिंग की चौड़ाई को मापने के लिए एक तरीका ढूंढ रहा हूं।
निम्न छवि दिखाती है कि मापित चौड़ाई विभिन्न पाठ आकारों में वास्तविक पाठ लंबाई से कैसे अलग हो जाती है।
स्क्रीनशॉट एक कस्टम दृश्य में निम्न कोड चल बनाया जाता है:
@Override
protected void onDraw(Canvas canvas) {
for(int i = 0; i < 15; i++) {
int startSize = 10;
int curSize = i + startSize;
paint.setTextSize(curSize);
String text = i + startSize + " - " + TEXT_SNIPPET;
layout = new StaticLayout(text,
paint,
Integer.MAX_VALUE,
Alignment.ALIGN_NORMAL,
1.0f,
0.0f,
true);
float top = STEP_DISTANCE * i;
float measuredWidth = layout.getLineMax(0);
canvas.drawRect(0, top, measuredWidth, top + curSize, bgPaint);
canvas.drawText(text, 0, STEP_DISTANCE * i + curSize, paint);
}
}
क्या आपने 'Paint.measureText()' की कोशिश की है? – neevek
http://stackoverflow.com/questions/7549182/android-paint-measuretext-vs-gettextbounds – nullpotent
@ नीवेक यह एक ही परिणाम उत्पन्न करता है लेकिन शीर्ष पर यह बहु रेखा पाठ को मापने में सक्षम नहीं है। – Moritz