2013-05-05 3 views
0

Я хотел бы иметь поле, похожее на то, что это обеспечивает (http://aehlke.github.io/tag-it/), но в приложении для Android. Кто-нибудь знает о реализации или о том, что я должен сделать, чтобы сделать эту работу на Android? Я просмотрел и ничего не нашел. Я новичок в AndroidПометка ключевых слов в textinput в android

+1

Посмотрите на это. Сво [. Ближайший ответ, который я нашел] [1] Надеюсь, что это помогает [1]: http://stackoverflow.com/a/10864568/2345913 – CRUSADER

+0

спасибо. Я проверю его – Piddien

ответ

1

Ok я нашел хорошее решение, которое я отлаживается и немного упрощен, это здесь: http://www.kpbird.com/2013/02/android-chips-edittext-token-edittext.html

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

Я добавил реализацию пользовательского TextWatcher где реализован метод onTextChange запустить метод я назвал bubbleWord() (в основном взяты из вышеупомянутого источника)

private void bubbleWord() { 
    int numberOfBubbles = 0; 

    String triggersString = getText().toString(); 
      //note that I use space as a separator 
    if (triggersString.contains(" ")) { 
     SpannableStringBuilder ssb = new SpannableStringBuilder(
       getText()); 
     BubbleMultiAutoCompleteTextView.this 
       .setTriggersArray(triggersString.trim().split(" ")); 

     String[] triggers = BubbleMultiAutoCompleteTextView.this 
       .getTriggers(); 
     for (String trigger : triggers) { 
      LayoutInflater lf = (LayoutInflater) getContext() 
        .getSystemService(Activity.LAYOUT_INFLATER_SERVICE); 
      TextView textView = (TextView) lf.inflate(
        R.layout.bubble_edit, null); 
      textView.setText(trigger); // 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 
      @SuppressWarnings("deprecation") 
      BitmapDrawable bmpDrawable = new BitmapDrawable(viewBmp); 
      bmpDrawable.setBounds(0, 0, 
        bmpDrawable.getIntrinsicWidth(), 
        bmpDrawable.getIntrinsicHeight()); 
      // create and set imagespan 
      ssb.setSpan(new ImageSpan(bmpDrawable), numberOfBubbles, 
        numberOfBubbles + trigger.length(), 
        Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
      numberOfBubbles = numberOfBubbles + trigger.length() + 1; 
     } 
     // set chips span 
     setText(ssb); 
     // move cursor to last 
     setSelection(getText().length()); 
    } 
} 

В папке макета этот файл был включен (так же, как и раньше, почти такой же, как источник, но немного по-другому):

<?xml version="1.0" encoding="UTF-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/edtTxt1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="#9191B5" 
    android:drawablePadding="2dp" 
    android:drawableRight="@drawable/exclamation_octagon_fram" 
    android:padding="8dp" 
    android:shadowColor="#FFFFFF" 
    android:shadowDy="1" 
    android:shadowRadius="0.01" 
    android:textColor="#FFFFFF" 
    android:textSize="18sp" 
    android:textStyle="bold" /> 

Пожалуйста, дайте мне знать, если кто нуждается в этом, и я что-то забыл.

+0

Было бы неплохо, если бы значок был доступен для удаления. Он еще не реализован, но я рассмотрю его и отредактирую ответ, обеспечивающий это решение, если у меня будет время позже. – Piddien

 Смежные вопросы

  • Нет связанных вопросов^_^