2012-12-13 19 views
8

में टेक्स्टस्पेन के साथ टेक्स्ट गड़बड़ हो गया है, मैं एक साधारण चैट ऐप बना रहा हूं जहां उपयोगकर्ता को टेक्स्ट और इमोटिकॉन्स भेजने की क्षमता है। मैं एक और फोन दोनों पाठ और इमोटिकॉन्स भेज सकता हूं। मेरे समस्याएं हैं:टेक्स्टटाइम

1. जब मैं कुछ भी लिखते हैं और किसी भी इमोटिकॉन जोड़ें:

enter image description here

तो मैं छवि के बाद सही से पहले और सही किसी भी पाठ टाइप नहीं कर सकते। मैं "ओ" पत्र से पहले लिख सकता हूं। प्रणाली "देखता है" कि मैं टाइप करें, तो भी अगर मैं टाइप "हनी" स्माइली के बाद, मैं यह नहीं देख सकते हैं, लेकिन EditText यह पंजीकृत करता है और संदेश भेजा है:

enter image description here

2. जब मैं एडिटेक्स्ट में सिर्फ एक इमोटिकॉन जोड़ता हूं, फिर मैं इसे हटा देता हूं, मैं कुछ भी टाइप नहीं कर सकता क्योंकि हटाया गया इमोटिकॉन दिखाई देता है। यह केवल एक बार प्रकट होता है, इसलिए कोई फर्क नहीं पड़ता कि मैं कितने अक्षर टाइप करता हूं, एडिटटेक्स्ट इमोटिकॉन को हटाने से पहले जैसा दिखता है, लेकिन पाठ को इमोटिकॉन के बिना भेजा जाता है, जैसे कि सभी तीन मामलों में।

3. जब मैं "कुछ" EditText में टाइप तो बाद "कुछ" किसी भी इमोटिकॉन सम्मिलित करें:

enter image description here

तब मैं इमोटिकॉन के बाद कर्सर डाल दिया और इसे हटा, यहाँ क्या बचा है :

enter image description here

लेकिन सही संदेश भेजा जाता है जब मैं संदेश बटन दबाएँ:

enter image description here

यही कारण है कि इमोटिकॉन के बटन श्रोता अंदर (जब मैं EditText में जोड़ने के लिए इमोटिकॉन क्लिक करें इस विधि सक्रिय होता है) है।

ib_happy.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 

     int cursorPosition = mOutEditText.getSelectionStart(); 
      mOutEditText.getText().insert(cursorPosition, smileys[0]); 
     SpannableStringBuilder ssb = new SpannableStringBuilder(mOutEditText.getText()); 
     ssb.setSpan(new ImageSpan(bitmapArray.get(0), ImageSpan.ALIGN_BASELINE), cursorPosition, cursorPosition+2, Spannable.SPAN_INCLUSIVE_INCLUSIVE); 
     mOutEditText.setText(ssb, BufferType.SPANNABLE); 
      mOutEditText.setSelection(cursorPosition+2); 
     dialog_emoticon.dismiss(); 
    } 
}); 
+0

जहां आप इसे ठीक करने में सक्षम थे? – noxius

+1

हाँ, जैसा कि आप स्वीकार किए गए उत्तर – erdomester

उत्तर

6

मुझे समाधान मिला। मुझे बस इतना करना था कि Spannable.SPAN_INCLUSIVE_INCLUSIVE से Spannable.SPAN_EXCLUSIVE_EXCLUSIVE

+0

मुझे एक ही समस्या है, लेकिन 'Spannable.SPAN_EXCLUSIVE_EXCLUSIVE' मेरी जेली बीन डिवाइस पर समस्या का समाधान नहीं करता है। एंड्रॉइड 2.2 पर यह अपेक्षा की तरह काम करता है। क्या आपके पास इसके बारे में कोई जानकारी है? – fish

+0

दुर्भाग्य से मैं नहीं करता हूं और मेरे पास जेली बीन डिवाइस – erdomester

+0

@ फिश नहीं है जिसे मैंने जेली बीन (एमुलेटर) में परीक्षण किया है और इसमें कोई समस्या नहीं है। – BornToCode

0

मुझे लगता है कि जिस तरह से मैं छवियों स्थान बदल सकते हैं/पाठ सेट/सुधार करना/मान्य इनपुट/आदि कि edittext करने के लिए एक textwatcher जोड़ सकते हैं और उपयोगकर्ता प्रकार के रूप में देखते हैं,।

editText.addTextChangedListener(textWatcher); 

textWatcher = new TextWatcher() { 
    public void afterTextChanged(Editable s) { 
     //editText.doStuffHere 
     //reposition your image/etc. 
    } 
    public void beforeTextChanged(CharSequence s, int start, int count, int after) { } 
    public void onTextChanged(CharSequence s, int start, int before, int count) { } 
}; 
+0

में देखते हैं, इसलिए जब मैं हैलो टाइप करता हूं :)/:) स्माइली/txt गिनती 7 है। फिर मैं "हनी" टाइप करता हूं, जो अदृश्य है, लेकिन ऐसा इसलिए है क्योंकि टाइप की संख्या पात्र 12 हो गए हैं। मैं इसके बारे में क्या कर सकता हूं? – erdomester

+0

क्षमा करें मैं इस पर breadcrumb मोड में हूँ। शायद बाद में कुछ बदल गया है .... अगर (s.contains (":)")) और उसके बाद पाठ के तहत प्रारंभ करें, पहले, और ":)" कहां हैं और इसका उपयोग करके टेक्स्ट आउटपुट का पुनर्निर्माण करने के लिए गिनती करें editText.getText और संपादित करेंText.setText। – logray