Android add more smileys in one edittext?

后端 未结 2 1871
旧时难觅i
旧时难觅i 2020-12-09 23:49

I need to add more than one smileys in a single edittext box. For add a single smiley I follow this link

How to add more smileys in a single Edittext box? Thanks in

相关标签:
2条回答
  • 2020-12-10 00:11

    You can add as many ImageSpans to a Spannable as you like. Just follow the concept laid out by the code you're linking. You probably want to use a SpannableStringBuilder too.

    SpannableStringBuilder ssb = new SpannableStringBuilder("Some Text"); 
    Bitmap image1 = BitmapFactory.decodeResource( getResources(), R.drawable.yourimage1 ); 
    Bitmap image2 = BitmapFactory.decodeResource( getResources(), R.drawable.yourimage1 ); ssb.setSpan( new ImageSpan( image1 ), 0, 1, Spannable.SPAN_INCLUSIVE_INCLUSIVE );
    ssb.setSpan( new ImageSpan( image2 ), 2,3, Spannable.SPAN_INCLUSIVE_INCLUSIVE ); 
    deleteButton.setText( ssb, BufferType.SPANNABLE );
    

    I tried above code and it works fine. I added two image span in one text view, likewise you can add as many image span to textview.

    0 讨论(0)
  • 2020-12-10 00:21

    You can add as many ImageSpans to a Spannable as you like. Just follow the concept laid out by the code you're linking. You probably want to use a SpannableStringBuilder too.

    Drawable happySmiley = mContext.getResources().getDrawable(R.drawable.happy);
    happySmiley .setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
    Drawable sadSmiley = mContext.getResources().getDrawable(R.drawable.sad);
    sadSmiley .setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
    
    SpannableStringBuilder builder = new SpannableStringBuilder();
    builder.append("Some text [happy_smiley_anchor]");
    builder.setSpan(new ImageSpan(happySmiley), builder.length()-"[happy_smiley_anchor]".length(), builder.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    builder.append(". Some more text [sad_smiley_anchor]");
    builder.setSpan(new ImageSpan(sadSmiley), builder.length()-"[sad_smiley_anchor]".length(), builder.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    
    edittext.setText(builder);
    

    Obviously you can use any anchor text/character you like - it gets replaced when the ImageSpan is inserted. It might even work with an empty char/string, but I didn't try that.

    0 讨论(0)
提交回复
热议问题