Как получить токенайзер MultiAutoCompleteTextView, похожий на приложение Facebook?

Я создаю приложение, которое имеетДля того, чтобы» поле, как в приложении Facebook "Новое сообщение" особенность.

После выбора элемента из выпадающего списка я создаю область изображений и добавляю ее вMultiAutoCompleteTextView, я использовалSpaceTokenizer для этого взгляда. Проблема в том, что когда я нажимаю на клавишу возврата, курсор сначала перемещается в пустое пространство (то есть пробелTokenizer) и затем, когда я снова нажимаю на клавишу возврата, все слово удаляется .... Я хочу удалить все слово при первом нажатии кнопки возврата, как приложение Facebook ...

Вот мой код дляSpaceTokenizer

     multiContentText.setTokenizer(new Tokenizer(){
     public int findTokenStart(CharSequence text, int      cursor) {
        int i = cursor;
        if(i>0){
            Log.d("textchar ",""+text.charAt(i - 1));
        }

        while (i > 0 && text.charAt(i - 1) != ' ') {
            i--;
        }
        while (i < cursor && text.charAt(i) == ' ' || text.charAt(i - 1) == '\n') {
            i++;
        }

        return i;
    }

    public int findTokenEnd(CharSequence text, int cursor) {
        int i = cursor;
        int len = text.length();

        while (i < len) {
            if (text.charAt(i) == ' ' || text.charAt(i - 1) == '\n') {
                return i;
            } else {
                i++;
            }
        }

        return len;
    }

    public CharSequence terminateToken(CharSequence text) {
        int i = text.length();
        while (i > 0 && text.charAt(i - 1) == ' ' || text.charAt(i - 1) == '\n') {
            i--;
        }

        if (i > 0 && text.charAt(i - 1) == ' ' || text.charAt(i - 1) == '\n') {
            return text;
        } else {
            if (text instanceof Spanned) {                               
                SpannableString sp = new SpannableString(text + " ");
                TextUtils.copySpansFrom((Spanned) text, 0, text.length(),
                                        Object.class, sp, 0);
                return sp;
            } else {                                 
                return text+" ";
            }
        }
    }
});

Я использую этот код для созданияTextView в моем мульти-ContentText

SpannableStringBuilder ssb = new SpannableStringBuilder(multiContentText.getText());
String c="text from the list";
TextView textView = (TextView) inflater.inflate(R.layout.chips_edittext, null);
textView.setText(c); // set text
int spec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED);
textView.measure(spec, spec);
textView.layout(0, 0, textView.getMeasuredWidth(), textView.getMeasuredHeight());
Bitmap b = Bitmap.createBitmap(textView.getWidth(), textView.getHeight(),Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(b);
canvas.translate(-textView.getScrollX(), -textView.getScrollY());
textView.draw(canvas);
textView.setDrawingCacheEnabled(true);
Bitmap cacheBmp = textView.getDrawingCache();
Bitmap viewBmp = cacheBmp.copy(Bitmap.Config.ARGB_8888, true); 
textView.destroyDrawingCache();  // destory drawable
// create bitmap drawable for imagespan
BitmapDrawable bmpDrawable = new BitmapDrawable(viewBmp);               
bmpDrawable.setBounds(0, 0,bmpDrawable.getIntrinsicWidth(),bmpDrawable.getIntrinsicHeight());
// create and set imagespan 
ssb.setSpan(new ImageSpan(bmpDrawable),0 ,c.length() , Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
// set chips span 
multiContentText.setText(ssb);      
multiContentText.setSelection(multiContentText.getText().length());

Я не уверен, что пространствоTokenizer это правильный вариант для этого типа поведения ... Любая помощь или указатели будут благодарны ...

Вот скриншот для лучшего понимания ....

У меня есть текст, за которым следует пробел, а затем курсор ... Если я нажимаю клавишу Backspace, он сначала перемещается в пустое место, и только когда я снова нажимаю клавишу Backspace, весь текст удаляется ....

Вот еще один скриншот ..

Здесь курсор не точно между двумяTextViewВ отличие от приложения Facebook, которое снова вызывает некоторые проблемы при вставке текста ...

Ответы на вопрос(3)

Ваш ответ на вопрос