Токен EditText (Поле) Android

Потому что по какой-то причине мне нужен Edittext, как красная часть на этом изображении:

Всякий раз, когда пользователь нажимает кнопку удаления на клавиатуре, текст редактирования удаляет один токен вместо одного слова. Итак, мой вопрос: есть ли у нас такой контроль? или если нет, знаете ли вы, как можно настроить один. Примечание: я неТоже нужно на все 100%. Прямо сейчас я думаю об использовании метода TextWatcher или setKeyListener для удаления функции.

Большое спасибо за любую помощь. И извините, потому что мой английский не очень хорошо.

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

мы собралиTokenAutoComplete на GitHub для нашего использования в Splitwise. Я не могЯ не нашел ничего подобного в Android SDK, поэтому я сделал свой собственный.

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

Вот'Базовый пример:

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, если вам нужны изображения в токене)



    


Token Backgound Drawable


    
    

Код объекта Person

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);
    }
}

Код расположения



    


 karanatwal.github.io12 апр. 2019 г., 13:38

Почтовый клиент Android AOSP, похоже, пытается что-то сделать. Это с открытым исходным кодом.

Отэтот коммит Вы видите, что Google называет "чип» что ты называешьЗначок».

Вы должны найти всю информацию о том, что нужно для реализации таких чипов, из вышеупомянутого коммита, который, как я полагаю, был в первый раз, когда Google представил такие чипы (по крайней мере, по почте), или ввесь источник почтового клиента AOSP:

Интегрировать чипы в электронную почту.

Код изменения: Ice037a55a169037f725a667fad7714c7e9580b86

 gZerone14 нояб. 2012 г., 09:45
Привет. Я думаю, что это не в моих силах. Я использую другие способы для моего проекта. Я больше не использовал Edittext. И я думаю, что это как хакерский путь. Так. Я не должен обнародовать это. Но я нашел эту ссылку:ballardhack.wordpress.com/2011/07/25/... Я думаю, что это хорошо, и, возможно, помочь другим парням.
 cimnine12 нояб. 2012 г., 09:37
Извините, что не могу дать лучшего ответа. Я искал решение некоторое время назад и тоже ничего не нашел. Несмотря на то, что ничто не мешает вам перенести существующий код на Android 3.0, я полагаю, что вы стали более безопасными (и более быстрыми), думая о решении самостоятельно. Почему бы не сделать его открытым исходным кодом впоследствии?
 gZerone11 нояб. 2012 г., 15:23
Извините, потому что я отвечаю слишком поздно. Большое спасибо @cimnine. Но, похоже, доступно только на ICS. Я вижу, что это использует RecipientEditTextView. Я могу'это не видно на Android SDK. После исследования я нашел это:android.googlesource.com/platform/frameworks/ex/+/refs/heads/..., И я вижу это доступно только на ICS. (У меня нетпока не пытался осуществить, следуйте вашему комментарию). Моя минимальная версия Android 3.0.

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