2012-12-13 20 views
8

içinde ImageSpan ile karıştırılır Kullanıcı metin ve ifadeler gönderme olanağına sahip basit bir sohbet uygulaması yapıyorum. Hem metin hem de ifadeleri başka bir telefona gönderebilirim. Benim sorunlar şunlardır:Metin EditText

1.When şey yazıp bir ifade eklemek:

enter image description here

Sonra postimaj hemen önce ve hemen herhangi bir metin yazamazsınız. "O" harfinden önce yazabilirim. Sistem, ben onu göremiyorum ben gülen sonra "Honey" yazıp bu yüzden bile, yazın o "görür" ama EditText bunu kaydeder ve mesaj gönderilir:

enter image description here

2.When Edittext'e sadece bir ifade ekledikten sonra onu siliyorum, silinen ifade göründüğü için hiçbir şey yazamam. Sadece bir kez görünür, bu yüzden yazdığım kaç karakter olursa olsun, EditText ifadeyi silmeden hemen önce görünür, ANCAK metin, her üç durumda olduğu gibi, ifade olmadan gönderilir.

3.When Sonra "bazı" sonra bir ifade eklemek EditText içinde "bir şeyler" yazın:

enter image description here

Sonra İfade sonra imleci koydu ve silin, burada ne kaldı :

enter image description here

Ama Gönder düğmesine bastığımda doğru mesajı gönderilir:

(Ben EditText eklemek için ifadeyi tıkladığında bu yöntem devreye girer) duygusal simgenin düğmesi dinleyici içinde ne var

enter image description here

.

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

olarak değiştirmekti? – noxius

+1

Evet Kabul edilen yanıtta gördüğünüz gibi oldum – erdomester

cevap

6

Çözümü buldum. Tek yapmam gereken, düzeltmek için Spannable.SPAN_INCLUSIVE_INCLUSIVE'u Spannable.SPAN_EXCLUSIVE_EXCLUSIVE

+0

Aynı problem var ama 'Spannable.SPAN_EXCLUSIVE_EXCLUSIVE' problemi Jelly Bean cihazımda çözmüyor. Bir Android 2.2'de beklendiği gibi çalışır. Bununla ilgili herhangi bir bilgin var mı? – fish

+0

Maalesef bir Jelly Bean cihazına sahip değilim ve ben yokum. – erdomester

+0

@fish Ben Jelly Bean (emülatör) 'de test ettim ve sorun yok. – BornToCode

0

Ben etc/giriş doğrulamak/düzeltmeler yapmak// görüntü yeniden konumlandırmak metni ayarlayabilirsiniz bu şekilde o EDITTEXT bir textwatcher ekleyip kullanıcı yazarken izlerdi. Çözeltiyi buldum.

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

Merhaba :)/:) yazdığımda smiley/txt sayısı 7'dir. Sonra "Honey" yazıyor, görünmez, ancak yazılanların sayısı çünkü karakterler 12'ye yükseldi. Bu konuda ne yapabilirim? – erdomester

+0

Üzgünüz, bu konuda kırıntı modundayım. Belki afterTextChanged altında bir şey .... eğer (s.contains (":)")) ve sonra onTextChanged altında, ":)" 'nin nerede olduğunu belirleyerek metin çıktısını yeniden oluşturmak için başlangıç, önce ve geri sayımı kullanın. editText.getText & editText.setText. – logray