2010-10-22 14 views
10

का आकार बदलना मेरे पास एक गतिविधि है जहां मैं एक शीर्षलेख प्रदर्शित करना चाहता हूं जो ऐप की शीर्ष तिमाही लेता है और टेक्स्ट का गतिशील सेट प्रदर्शित करता है। कुछ मामलों में यह सभी एक पंक्ति पर फिट होगा और मैं फ़ॉन्ट आकार का आकार लेना चाहता हूं ताकि यह पढ़ने के लिए बड़ा और आसान हो। कुछ मामलों में यह कई लाइनों पर होगा (आमतौर पर 4 से कम) और छोटे होने की आवश्यकता है।एक एंड्रॉइड मल्टी-लाइन टेक्स्टव्यू

उलझन है कि अगर मैं स्पष्ट रूप से setText में नई-पंक्तियों सेट कभी कभी यह मैं जहां एक उम्मीद नहीं थी एक नई पंक्ति दर्ज हो जाएगा है अर्थात्:

 
"My first line of text\nMy Second line of text" 
Might get turned into (it's right adjusted in this version): 
"My first line of 
      text 
    My second line 
      of text" 

मुझे यकीन है कि या तो रखने के बारे में जाने के लिए कैसे नहीं कर रहा हूँ टेक्स्टव्यू न्यूलाइन डालने की कोशिश करने से या पूरी चीज को स्वरूपित करने की देखभाल करने की कोशिश करने से। यदि मैंने कुछ पाठ एक वास्तव में एक लंबा शब्द होने के लिए सेट किया है तो यह कुछ चुने हुए बिंदु पर बीच में एक नई रेखा डालेगा। और दूसरी बार मैं यादृच्छिक रूप से टेक्स्ट की आखिरी कुछ पंक्तियां प्राप्त करता हूं।

क्या मुझे स्पष्ट रूप से फ़ॉन्ट आकार को सही ढंग से सेट करने के लिए सेट करना चाहिए और फिर आकार को मैन्युअल रूप से समायोजित करना चाहिए? क्या कोई 'सर्वोत्तम अभ्यास' है जिसके लिए मुझे इसका उपयोग करना चाहिए? यदि मैं फ़ॉन्ट आकार को एक बड़े पैमाने पर बड़े फ़ॉन्ट के रूप में सेट करता हूं तो यह काम करता है लेकिन यह पता लगाना अच्छा होगा कि ऐसा करने का 'सही' तरीका क्या होगा। और मुझे मैन्युअल रूप से 4 सिंगल लाइन टेक्स्ट व्यू में जोड़ना नहीं होगा और उन्हें स्वयं प्रारूपित करना होगा।

लेआउट एक्सएमएल मैं उपयोग कर रहा हूँ है:

<TextView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentRight="true" 
     android:layout_marginTop="10dip" 
     android:layout_marginRight="8dip" 
     android:singleLine="false" 
     android:ellipsize="marque" 
     android:gravity="right|bottom" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:textSize="30sp" 
/> 
+0

उम्म, यह बिल्कुल स्पष्ट नहीं है कि आप क्या करना चाहते हैं। आप टेक्स्टबॉक्स भरने के लिए टेक्स्ट का आकार बदलना चाहते हैं? आप न्यूलाइन क्यों जोड़ रहे हैं? आकार में बस सेट करें, टेक्स्ट में डालें, और इसे लपेटें। – Falmarri

+0

हालांकि आप वास्तव में पूरे टेक्स्टबॉक्स में फिट करने के लिए किस आकार को डालते हैं? यदि आप आकार का चयन करते हैं तो बहुत बड़ा टेक्स्ट व्यू आपके टेक्स्ट में नई लाइनों को काट/डालने का निर्णय लेता है (और मुझे यकीन नहीं है कि यह निर्णय कैसे ले रहा है)। यदि आप एक छोटा सा आकार चुनते हैं और अपने आप में नई लाइनें नहीं डालते हैं, तो इसे मूल रूप से प्रत्येक फ़ॉन्ट आकार के माध्यम से बिना कदम के आकार देने और इसे हर बार पाठ (नई लाइनों को सम्मिलित करने) के बिना आकार देने के लिए कठिन होता है। यह अच्छा होगा अगर आप टेक्स्टव्यू को चीज़ों के साथ गड़बड़ करने और आकार बदलने/नई लाइनों को डालने से रोकते हैं। – William

उत्तर

0

तुम कर सकते हो। स्ट्रिंग मान पर एक नई लाइन charecter संलग्न करें। फिर इस स्ट्रिंग मान को टेक्स्ट व्यू के टेक्स्ट एट्रिब्यूट के रूप में सेट करें।

String temp = "ASDF \n"+"EFG \n"+"HIJ"; 
TextView tv=//find it from the context 
tv.setText(temp); 
0

एक और समाधान है कि आप WebView का उपयोग कर सकते हैं कि आप क्या जानकारी के लिए इस Android TextView Justify Text जवाब की जांच करना चाहते हैं के लिए है। वेबव्यू का उपयोग करके आपको लाइन संरेखणों के बारे में परवाह नहीं करना है, जिसे आप एचटीएमएल सीएसएस संपत्ति

-1

मुझे यह सुनिश्चित करने के लिए अपने प्रश्न को दोबारा शुरू करने दें कि मैं आपको सही ढंग से समझता हूं।

  1. अपने इनपुट हमेशा पाठ के 1 से 4 लाइनों है
  2. तुम हमेशा और केवल एक पंक्ति के अंत में तोड़ने के लिए चाहते हैं, तो आप एक से अधिक पंक्ति
  3. है आप बड़े रूप में प्रत्येक पंक्ति होना चाहता हूँ जितना संभव हो सके कि यह टेक्स्टव्यू फिट बैठता है जो ऊंचाई स्क्रीन के 1/4 है?

मुझे लगता है कि आप कर का प्रस्ताव एक custom view:

  • उपयोग Paint.getTextBounds पाठ आप संरेखण और इस तरह नियंत्रित करने के लिए सहायक वर्ग StaticLayout उपयोग कर सकते हैं ड्राइंग के लिए कोड
  • में गतिशील रूप से सबसे अच्छा पाठ का आकार निर्धारित करने के लिए ।
  • आप कस्टम स्क्रीन के 1/4 तक का समय लग या तो एक LinearLayout अंदर डाल दिया है और यह इसकी ऊंचाई असाइन करें या यह प्रोग्राम के सेट View.onMeasure
1

में करने के लिए layout_weight का उपयोग आप स्ट्रिंग लंबाई गिनती कर सकता है देखने के लिए और पाठ का आकार सेट इस फार्म

if(myString.length()==40){ 
    myTextview.setTextSize(11); 
else if(myString.length()==25){ 
    myTextview.setTextSize(16); 
... 

मुझे आशा है कि इस मदद करता है में प्रत्येक लंबाई

कुछ के लिए सबसे अच्छा आकार फिट करने के लिए।

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