2010-12-04 29 views
43
<TextView android:id="@+id/prodLbl" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerHorizontal="true" 
    android:layout_centerVertical="true" 
    android:textColor="#FFFFFF" 
    android:textSize="30dip" 
    android:textStyle="italic" 
    android:text="Magnifico" 
    /> 

कम से कम 480x800 एमुलेटर या नेक्सस वन पर, सही चरित्र से कुछ पिक्सल क्लिप करने लगता है।रैप_कंट्स के साथ इटालिक टेक्स्ट व्यू दाएं किनारे पर पाठ को क्लिप करने के लिए प्रतीत होता है

मेरे लिए यह एक बग की तरह दिखता है, लेकिन मैं सिर्फ एक एंड्रॉइड शुरुआत कर रहा हूं। मैंने मार्जिन को बाएं और दाएं जोड़ने की कोशिश की, लेकिन यह अभी भी क्लिपिंग पर रखा गया। अंत में मेरे आसपास हैक पाठ के दोनों किनारों पर एक ही स्थान जोड़ना था। कोई अन्य समाधान?

+0

करने के लिए एक हेयर रिक्ति जोड़ सकते हैं? – user432209

+0

http://img576.imageshack.us/img576/2865/textclip.png सही 'ओ' – Grego

+0

देखें आपने मार्जिन का उल्लेख किया है, क्या आपका मतलब पैडिंग है? –

उत्तर

17

android:layout_width="wrap_content", आपको लपेटा गया सामग्री प्रतिपादन के लिए एक आयत देता है। सभी सामान्य पाठ (गैर-इटालिक) के लिए अच्छी तरह से काम करेंगे।

एक बार जब आप italic पाठ सक्षम किया है, लिपटे पाठ आयत में फिट है और इसलिए सबसे दायीं ओर का चरित्र जब तक अपने अन-कट-सक्षम (जैसे ., ), 1, आदि)

काट दिया जाएगा कोशिश करेंगे यह android:gravity="right" पर लागू होता है भी, क्योंकि पाठ दायीं पर पुश किया जाएगा:

समाधान के रूप में सुझाव दिया

पुनश्च पाठ (या कुछ भी बेहतर ??) के अंत में एक स्थान की है। अगर हमारे पास italic टेक्स्ट है, तो हमें एक ही समस्या का सामना करना पड़ता है।

11

मैंने अपने स्ट्रिंग्स.एक्सएमएल में सभी तारों के अंत में " \" जोड़ा। \ बचने का चरित्र है, इसलिए इस तरह से मैं इस मुद्दे पर आ सकता हूं, लेकिन यह समाधान बुरा है। उम्मीद है की यह मदद करेगा।

+1

भी चिपका रही है यह एकमात्र कामकाज है जो विश्वसनीय रूप से काम करता है। यदि आप संसाधन तारों का उपयोग करते हैं तो पिछली जगह हटा दी जाएगी (यह ऐसा क्यों करती है?) जिससे इसका कोई प्रभाव नहीं पड़ता है, लेकिन स्लैश इसका ख्याल रखता है। –

+0

मुझे नहीं लगता कि यह एक्सएमएल के लिए एक बच निकला चरित्र है, कम से कम मैंने इसे यहां नहीं देखा: http://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references लेकिन यह निश्चित रूप से मेरे लिए काम करता है! मुझे आश्चर्य है क्योंकि। – nmr

0

अपने टेक्स्ट व्यू पर दाईं ओर एक 3 डीपी पैडिंग जोड़ें। मैंने 1 डीपी और 2 डीपी के साथ कोशिश की, लेकिन 3 डीपी पूरी तरह से चाल चल रहा था।

android:paddingRight="3dp"

+8

पैडिंग टेक्स्ट क्लिप रेक्ट को प्रभावित नहीं करता है, कम से कम 2.3 पर नहीं। –

+0

किसी ऐप के शीर्षक के लिए (मेरे मामले में ActionBarSherlock) जो टेक्स्टव्यू शीर्षक को अनुकूलित करने के लिए इतना आसान नहीं बनाता है। लेकिन कोशिश करने के लिए धन्यवाद। –

+0

यह मेरे लिए काम किया। –

1

यह निश्चित-चौड़ाई TextViews भी लागू होता है, न सिर्फ "wrap_content"। मुझे यकीन नहीं है कि क्या समस्या संस्करण-विशिष्ट है क्योंकि कुछ टिप्पणीकारों ने संकेत दिया है। मैं सभी हनीकॉम संस्करणों पर मुद्दा देखता हूं। मैंने जो मुद्दा देखा है उससे मार्जिन, पैडिंग, एक निश्चित चौड़ाई, या एक वास्तविक-इटालिक कस्टम टाइपफेस का उपयोग करके दूर नहीं जाता है।

17

आप Unicode no-break space character (\ u00A0) का भी उपयोग कर सकते हैं।

+0

यह काम करता प्रतीत होता है। – alaeri

+0

मेरे लिए भी काम करता है। अभी भी एक हैक, लेकिन एक हैक काम करता है! –

+0

एकमात्र समाधान जो अब – Bronx

5

बस टेक्स्ट के अंत में एक अतिरिक्त स्थान जोड़ें। एक्सएमएल में, आपको अंत में \u0020 जोड़ना होगा क्योंकि अन्यथा एक्सएमएल डिफ़ॉल्ट रूप से शुरुआत/अंत में व्हाइटस्पेस को अनदेखा करता है।

+0

के लिए काम करता है एक और समाधान/हैक/काम-आसपास। धन्यवाद। –

+0

सेटटेक्स्टस्क्यूएक्स का उपयोग कर एक ही समस्या थी (जो टेक्स्ट को इटैलिकिस करने का एक और तरीका है)। इस मुद्दे को भी ठीक किया गया। – thecoolmacdude

1

स्रोत को देखते हुए मुझे पता चला कि एक छाया सेटिंग क्लिप आयताकार को बढ़ाती है।

एक चाल चरित्र से परे एक अदृश्य छाया सेट करना है।

उदाहरण के लिए:

android:shadowRadius="2" 
android:shadowDx="2" 
android:shadowColor="#00000000" 

मुझे लगता है कि इस समाधान के लिए बेहतर है यह TextView जो जब एक अतिरिक्त चरित्र (जो एक पृष्ठभूमि के साथ अधिक स्पष्ट है) जोड़ने हो सकता है की चौड़ाई का विस्तार नहीं होगा।

+0

मेरे लिए काम नहीं किया। यह कहता है "आयाम प्रकारों की अनुमति नहीं है" – thecoolmacdude

+0

संपादित: डुबकी हटाएं –

3

एक और समाधान मिला (wrap_content का उपयोग करते समय 4.1.2 और 4.3 पर परीक्षण किया गया)।आप TextView या EditText वर्ग का विस्तार यदि आप onMeasure विधि इस तरह से ओवरराइड कर सकते हैं:

@Override 
protected void onMeasure(final int widthMeasureSpec, final int heightMeasureSpec) { 
    super.onMeasure(widthMeasureSpec, heightMeasureSpec); 

    final int measuredWidth = getMeasuredWidth(); 
    final float tenPercentOfMeasuredWidth = measuredWidth * 0.1f; 
    final int newWidth = measuredWidth + (int) tenPercentOfMeasuredWidth; 

    setMeasuredDimension(newWidth, getMeasuredHeight()); 
} 
0

यह मेरा समाधान: स्वरूप TextView और उपाय। 1 पिक्सेल के साथ टेक्स्टव्यू की उस सेट चौड़ाई के बाद मापा चौड़ाई में जोड़ें।

TextView textView = new TextView(this); 
textView.setText("Text blah blah"); 
textView.setTypeface(typeface, Typeface.BOLD_ITALIC) 
textView.measure(MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED); 
textView.setLayoutParams(new LayoutParams(textView.getMeasuredWidth() + 1, 
              LayoutParams.WRAP_CONTENT)); 

मेरे लिए काम करना। आशा है कि ये मदद करें।

1

आप आप आप क्या देख रहे हैं की एक छवि पोस्ट कर सकते हैं अपने स्ट्रिंग

<string name="hair_space">&#x200A;</string> 

String hairSpace = getContext().getString(R.string.hair_space); 
textView.setText(hairSpace + originalString + hairSpace) 
+1

यह अच्छी तरह से काम करता है, धन्यवाद! मुझे इन हैक्स से नफरत है कि Google हमें करने के लिए मजबूर करता है! –