2011-11-10 15 views
24

के साथ बनाएं, मैं प्रोग्रामेटिक रूप से एक टेक्स्ट व्यू बना रहा हूं जिसे मैं अंत में इलिप्सिस बनाना चाहता हूं।प्रोग्रामेटिक रूप से टेक्स्टव्यू को इलिप्सिस

छद्म कोड:

tv.setEllipsize(TextUtils.TruncateAt.END); 
    tv.setHorizontallyScrolling(false); 
    tv.setSingleLine(); 

ऊपर काम करता है महान।

tv.setEllipsize(TextUtils.TruncateAt.END); 
    tv.setHorizontallyScrolling(false); 
    tv.setMaxLines(1); 

यह काम नहीं करता है। क्या यह एक बग है? मुझे समझ में नहीं आ रहा है कि अंत में इलिप्स को टेक्स्ट क्यों नहीं मिल सकता है जब अधिकतम लाइनों को विशेष रूप से 1 की अधिकतम पंक्ति निर्दिष्ट करते हैं लेकिन सेटसिंगलाइन ठीक है।

उत्तर

45

setSingleLine() या setSingleLine(true) अधिक लाइनों के लिए उसकी ऊंचाई में बदलाव करने से रोकता है और TextView TextView बलों पंक्ति विराम (एक स्ट्रिंग में प्रतीक \n) की अनदेखी करने के।

setMaxLines(int n) टेक्स्ट व्यू में प्रदर्शित स्ट्रिंग की पहली एन लाइनों को प्रदर्शित करता है जो लाइन ब्रेक से अलग होते हैं।

उदाहरण के लिए स्ट्रिंग हो "मेरी पहली पंक्ति \ N और मेरी दूसरी लाइन \ N और तीसरा"

  • setSingleLine() जाने TextView प्रदर्शन की सुविधा देता है, "मेरी पहली पंक्ति और मेरे .." प्रदर्शन के बाद से चौड़ाई पार हो गई है और "मेरी पहली पंक्ति" "मेरी पहली पंक्ति" में
  • setMaxLines(2) परिणामों में और नीचे एक लाइन
  • setMaxLines(1) परिणाम कहा, "और मेरी दूसरी पंक्ति"
  • setMaxLines(3) स्पष्ट रूप से इस नमूने पर कोई असर नहीं होता है str आईएनजी।

अपडेट: यह "काट-छांट के साथ setDoubleLine" के लिए काम करना चाहिए:

// optional: string.replace("\n",""); or string.replace("\n"," "); 
tv.setSingleLine(false); 
tv.setEllipsize(TextUtils.TruncateAt.END); 
int n = 2; // the exact number of lines you want to display 
tv.setLines(n); 
+1

बहुत बढ़िया। क्या टेक्स्टव्यू होना संभव है जो अंत में दो पंक्तियां और अभी भी अंडाकार है? यानी, setDoubleLine() आदि? इस तरह मैंने अधिकतम काम करने की कल्पना की। मेरी ऊंचाई और चौड़ाई के लायक होने के लिए मूल्यों को डुबकी करने के लिए सेट किया गया है, match_parent नहीं। – sgarman

+0

@AndreyButov एक संपादन का सुझाव देने के लिए धन्यवाद, अगर सो नहीं जाता तो मैं स्वीकार करता। मैंने आपके सुझाव के अनुसार अब पोस्ट को सही किया है। एक बार फिर धन्यवाद। – stefan

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