2011-08-26 12 views
5

Làm thế nào để nhận văn bản và cười từ edittext vào chuỗi?Làm thế nào để có được văn bản và Smiley từ Edittext vào chuỗi?

Sử dụng mã sau tôi đã thêm biểu tượng mặt cười/biểu tượng cảm xúc trong Edittext nhưng cách tải văn bản/biểu tượng từ edittext sang định dạng chuỗi.

ImageGetter imageGetter = new ImageGetter() { 
     public Drawable getDrawable(String source) { 
      Drawable d = getResources().getDrawable(
        R.drawable.happy); 
      d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight()); 
      return d; 
     } 
    }; 

    cs = Html.fromHtml(
      "<img src='" 
        + getResources() 
          .getDrawable(R.drawable.happy) 
        + "'/>", imageGetter, null); 
    edttxtemoji.setText(cs); 
+0

Tôi đang làm một cái gì đó tương tự ĐÂY !!! http://stackoverflow.com/questions/16768930/implementations-of-emoji-emoticon-view-keyboard-layouts – toobsco42

Trả lời

0

Sử dụng Html.toHtml (văn bản Spanned)

như:

String myString = Html.toHtml(cs); 
System.out.println(myString); 

chỉnh sửa: đào iam trong bóng tối ở đây nhưng nó có thể là bạn muốn văn bản (string) đại diện của Smillie của bạn?

như bạn có:

cs = Html.fromHtml(
      "<img src='" 
        + getResources() 
          .getDrawable(R.drawable.happy) 
        + "'/>", imageGetter, null); 

và bạn muốn:

Chuỗi cs = ":)";

đúng không? nếu không, câu trả lời trước đó của tôi cung cấp cho bạn biểu diễn Chuỗi kỹ thuật về mã Html của bạn

+0

Tôi đã thử điều này nhưng điều này không hoạt động. –

+0

Cách này không hoạt động? – Michele

+0

2 dòng này cho tôi kết quả đầu ra sau thành định dạng chuỗi.

8

Vui lòng sử dụng chức năng sau.

public static Spannable getSmiledText(Context context, String text) { 
      SpannableStringBuilder builder = new SpannableStringBuilder(text); 
      int index;for (index = 0; index < builder.length(); index++) { 
      for (Entry<String, Integer> entry : emoticons.entrySet()) { 
       int length = entry.getKey().length(); 
       if (index + length > builder.length()) 
       continue; 
       if (builder.subSequence(index, index + length).toString().equals(entry.getKey())) { 
       builder.setSpan(new ImageSpan(context, entry.getValue()), index, index + length, 
        Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
       index += length - 1; 
       break; 
       } 
      } 
      } 
      return builder; 
     } 

sau cho cảm xúc mã ...

private static final HashMap<String, Integer> emoticons = new HashMap<String, Integer>(); 
     static { 
      emoticons.put("8-)", R.drawable.s1); 
      emoticons.put(":-&", R.drawable.s2); 
      emoticons.put(">:-)", R.drawable.s3).....}; 

và setText sử dụng

tv_msg_send.setText(getSmiledText(getApplicationContext(), edt_msg.getText().toString())); 
+0

Mã này không nhận được mặt cười Nếu tôi sử dụng Mã của bạn, văn bản "obj" là Quay lại để điều này không hữu ích cho tôi. –

+0

@dipak :: nhưng tôi có văn bản hoàn hảo để thiết lập mặt cười trong chế độ xem văn bản. và một điều nữa tôi đã cố gắng sử dụng mã của bạn một thời gian trước khi đăng bài này nhưng tôi không thể có được solution.now tôi không sử dụng phương pháp ImageGetter thay vì tôi đang sử dụng "addTextChangedListener" và thay đổi mã cười với hình ảnh bằng cách gọi thẳng về phía trước Hàm "getSmiledText" ở trên. vì vậy hãy thử lại, nó có thể giúp bạn – amity

+0

Tôi đã sử dụng Mã của bạn trong Dự án của tôi nhưng điều này không giúp tôi. cảm ơn vì sự giúp đỡ. –