Contact Bubble EditText Contact Bubble EditText android android

Contact Bubble EditText


Thanks @chrish for all the help. So here is how i did it:

final SpannableStringBuilder sb = new SpannableStringBuilder();TextView tv = createContactTextView(contactName);BitmapDrawable bd = (BitmapDrawable) convertViewToDrawable(tv);bd.setBounds(0, 0, bd.getIntrinsicWidth(),bd.getIntrinsicHeight());sb.append(contactName + ",");sb.setSpan(new ImageSpan(bd), sb.length()-(contactName.length()+1), sb.length()-1,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);to_input.setText(sb);public TextView createContactTextView(String text){  //creating textview dynamically  TextView tv = new TextView(this);  tv.setText(text);  tv.setTextSize(20);  tv.setBackgroundResource(R.drawable.oval);  tv.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.ic_clear_search_api_holo_light, 0);  return tv;}public static Object convertViewToDrawable(View view) {  int spec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED);  view.measure(spec, spec);  view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());  Bitmap b = Bitmap.createBitmap(view.getMeasuredWidth(), view.getMeasuredHeight(),            Bitmap.Config.ARGB_8888);  Canvas c = new Canvas(b);  c.translate(-view.getScrollX(), -view.getScrollY());  view.draw(c);  view.setDrawingCacheEnabled(true);  Bitmap cacheBmp = view.getDrawingCache();  Bitmap viewBmp = cacheBmp.copy(Bitmap.Config.ARGB_8888, true);  view.destroyDrawingCache();  return new BitmapDrawable(viewBmp);}


Here is a complete Solution for you

//creating textview dynamicalyyTextView textView=new TextView(context);textview.setText("Lauren amos");textview.setbackgroundResource(r.color.urovalshape);textView.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.icon_cross, 0);BitmapDrawable dd = (BitmapDrawable) SmsUtil.getDrawableFromTExtView(textView);edittext.settext(addSmily(dd));//convert image to spannableStringpublic SpannableStringBuilder addSmily(Drawable dd) { dd.setBounds(0, 0, dd.getIntrinsicWidth(),dd.getIntrinsicHeight());SpannableStringBuilder builder = new SpannableStringBuilder();builder.append(":-)");builder.setSpan(new ImageSpan(dd), builder.length() - ":-)".length(),builder.length(),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);return builder;}  //convert view to drawable  public static Object getDrawableFromTExtView(View view) {    int spec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED);    view.measure(spec, spec);    view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());    Bitmap b = Bitmap.createBitmap(view.getWidth(), view.getHeight(),            Bitmap.Config.ARGB_8888);    Canvas c = new Canvas(b);    c.translate(-view.getScrollX(), -view.getScrollY());    view.draw(c);    view.setDrawingCacheEnabled(true);    Bitmap cacheBmp = view.getDrawingCache();    Bitmap viewBmp = cacheBmp.copy(Bitmap.Config.ARGB_8888, true);    view.destroyDrawingCache();    return new BitmapDrawable(viewBmp);}

Here is the complete project file ,if any of you want to useSpannble


I got a library which does what you're looking for with :

  • Default or fully customizable (you can even use your own layout)
  • Multiline support
  • Click listener

Have a look here

Here a quickstart :

Add ChipView to your layout or create it programmatically :

<com.plumillonforge.android.chipview.ChipView    android:id="@+id/chipview"    android:layout_width="match_parent"    android:layout_height="wrap_content" />

Init it with a list of data which extend abstract Chip and a click listener (if you want) :

List<Chip> chipList = new ArrayList<>();chipList.add(new Tag("Lorem"));chipList.add(new Tag("Ipsum dolor"));chipList.add(new Tag("Sit amet"));chipList.add(new Tag("Consectetur"));chipList.add(new Tag("adipiscing elit"));ChipView chipDefault = (ChipView) findViewById(R.id.chipview);chipDefault.setChipList(chipList);chipDefault.setOnChipClickListener(new OnChipClickListener() {        @Override        public void onChipClick(Chip chip) {            // Action here !        }    });

Default ChipView is rendered like this :

Default ChipView

But you can customise as you like from overall to Chip level :

Overall ChipViewCustom ChipView

This isn't a MultiAutocomplete but you can manage to mimic it (I'm actually using it like that)