Android EditText Gmail нравится в поле

Я работаю над приложением, и я пытаюсь сделать gmail как поле «Кому», в котором есть блоки, внутри которых нельзя редактировать один раз, но просто удалены целиком (как на прилагаемом изображении). Если у него тоже может быть изображение, это было бы прекрасно.

Этот метод, называемый «фишками», обсуждается Романом Нуриком в сообщении Google+ . Он, в свою очередь, указывает на ответ Макарса здесь, на StackOverflow . Они, в свою очередь, указывают на реализацию этого пользовательского интерфейса, который вы видите в клиенте обмена запасами.

Я открываю свое решение TokenAutoComplete на github . Шахта была проверена до 2.2. Я разработал свой код, чтобы позволить довольно простые реализации и настройки.

Вот пример реализации с использованием моей библиотеки:

Подclass TokenCompleteTextView

public class ContactsCompletionView extends TokenCompleteTextView { public ContactsCompletionView(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected View getViewForObject(Object object) { Person p = (Person)object; LayoutInflater l = (LayoutInflater)getContext().getSystemService(Activity.LAYOUT_INFLATER_SERVICE); LinearLayout view = (LinearLayout)l.inflate(R.layout.contact_token, (ViewGroup)ContactsCompletionView.this.getParent(), false); ((TextView)view.findViewById(R.id.name)).setText(p.getEmail()); return view; } @Override protected Object defaultObject(String completionText) { //Stupid simple example of guessing if we have an email or not int index = completionText.indexOf('@'); if (index == -1) { return new Person(completionText, completionText.replace(" ", "") + "@example.com"); } else { return new Person(completionText.substring(0, index), completionText); } } } 

Код макета для contact_token (вы можете использовать любой вид макета здесь или можете бросать ImageView, если вам нужны изображения в токене)

    

Выравнивание токена

     

Код объекта объекта

 public class Person implements Serializable { private String name; private String email; public Person(String n, String e) { name = n; email = e; } public String getName() { return name; } public String getEmail() { return email; } @Override public String toString() { return name; } } 

Пример активности

 public class TokenActivity extends Activity { ContactsCompletionView completionView; Person[] people; ArrayAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); people = new Person[]{ new Person("Marshall Weir", "[email protected]"), new Person("Margaret Smith", "[email protected]"), new Person("Max Jordan", "[email protected]"), new Person("Meg Peterson", "[email protected]"), new Person("Amanda Johnson", "[email protected]"), new Person("Terry Anderson", "[email protected]") }; adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, people); completionView = (ContactsCompletionView)findViewById(R.id.searchView); completionView.setAdapter(adapter); completionView.setPrefix("To: "); } } 

Формат макета

    
  • Как я могу узнать, откуда действительно поступило сообщение?
  • Войдите в систему с двумя учетными записями (например, в Gmail) в одном окне Firefox
  • изменить адрес отправителя при отправке почты через gmail в c #
  • Как отправить электронное письмо с помощью C # через Gmail
  • Как установить Thunderbird для уведомления о новых сообщениях электронной почты только в определенных папках?
  • Outlook 2013 + Gmail приводит к появлению многих сообщений в черновиках даже после их отправки
  • Отправить электронное письмо в будущем
  • Как настроить учетную запись Google Apps GTalk в Pidgin?
  • Как кодировать символ плюса (+) в URL-адресе
  • Evolution Gmail Mashup + Фиксация метки времени
  • Как настроить Mail.App и Google Mail?
  • Interesting Posts

    Создать несколько ZIP-файлов, которые не зависят друг от друга?

    Regex для разделения HTML-тегов

    Почему и где \ n символы новой строки вводятся в c ()?

    Редактор сетевых пакетов для Linux?

    Linux: Постоянно синхронизировать файлы, в одну сторону

    Ошибка при установке пакета R

    Ошибка приложения при запуске из-за java.lang.IllegalArgumentException: column ‘_id’ не существует

    У меня есть 4 порта Ethernet RJ45, которые были ограничены до 200 КБ в секунду. Как использовать все 4 порта для ускорения моего сетевого подключения?

    Преобразование представления в Bitmap без отображения его в Android?

    Что означает «бит» в ОС

    В Java, как мне вызвать метод базового classа из переопределяющего метода в производном classе?

    Эффективно конвертировать обратную косую черту в косую черту в R

    Что означает `scanf (“% * % * c “)` означает?

    Разверните div с середины, а не сверху и слева, используя CSS

    удалить номер версии в URL-адресе

    Давайте будем гением компьютера.