Android EditText Gmail любит поле

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


person Ciprian    schedule 06.12.2012    source источник
comment
Проверьте это: stackoverflow.com/questions/11318551/   -  person Flávio Faria    schedule 06.12.2012
comment
HI Вы достигли этого Пожалуйста, дайте мне знать. я тоже пытаюсь реализовать подобное, но получаю много проблем @Ciprian   -  person AndroidDev    schedule 02.09.2013
comment
В конце концов это сработало, но в то время это доставило мне много головной боли :)   -  person Ciprian    schedule 03.09.2013
comment
@Ciprian Эй, пожалуйста, опубликуйте пример кода, если у вас есть ... в противном случае, пожалуйста, ответьте на этот вопрос. если вы знаете. проблема с заменой диапазона изображений в разных версиях Android для "> stackoverflow.com/questions/18780756/   -  person AndroidDev    schedule 18.09.2013
comment
Просто следуйте инструкциям CommonsWare, которые указали мне на решение   -  person Ciprian    schedule 18.09.2013
comment
У меня есть проблема. Пожалуйста, посмотрите stackoverflow.com /вопросы/19676347/   -  person Braj    schedule 06.11.2013


Ответы (2)


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

person CommonsWare    schedule 06.12.2012
comment
@Gopinath: насколько я знаю, да. Если у вас возникли проблемы с его работой, откройте новый вопрос StackOverflow и предоставьте подробности. - person CommonsWare; 10.12.2012
comment
@CommonsWare, я пытался использовать пользовательский интерфейс чипов после публикации в Google+. В нем много ссылок на классы фреймворка Android4.0, и я отказался от него. С тех пор, кажется, в сообществе были представлены лучшие образцы. Один из моих предпочтительных ответов: stackoverflow.com/questions/10812316/contact -bubble-edittext/ - person Gopinath; 10.12.2012
comment
@CommonsWare, вы правы, но очень сложно понять и реализовать код стандартного приложения mms. Я не мог этого сделать. Я хочу, чтобы его можно было легко использовать повторно - person tasomaniac; 21.02.2013
comment
@CommonsWare Я знаю, но настроить его и использовать для заполнения онлайн-данными мне кажется сложным. - person tasomaniac; 22.02.2013
comment
@CommonsWare я не могу импортировать github.com/Derelicte/android_frameworks/tree/master/ экс/фишки . Я думаю, что они разработаны в среде ndk. я не могу проверить или использовать этот код. Любой прямой или хороший учебник по реализации чипов в текстовом представлении с несколькими автозаполнениями - person AndroidDev; 02.09.2013
comment
@CommonsWare, пожалуйста, проверьте ссылку на мой вопрос SO. stackoverflow.com/questions/18561858/ - person AndroidDev; 02.09.2013

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

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

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

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content">

    <TextView android:id="@+id/name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/token_background"
        android:padding="5dp"
        android:textColor="@android:color/white"
        android:textSize="18sp" />

</LinearLayout>

Токен фоновый рисунок

<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <solid android:color="#ffafafaf" />
    <corners
        android:topLeftRadius="5dp"
        android:bottomLeftRadius="5dp"
        android:topRightRadius="5dp"
        android:bottomRightRadius="5dp" />
</shape>

Код объекта человека

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<Person> 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<Person>(this, android.R.layout.simple_list_item_1, people);

        completionView = (ContactsCompletionView)findViewById(R.id.searchView);
        completionView.setAdapter(adapter);
        completionView.setPrefix("To: ");
    }
}

Код макета

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <com.tokenautocomplete.ContactsCompletionView
        android:id="@+id/searchView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</RelativeLayout>
person Marshall Weir    schedule 03.10.2013
comment
У меня есть проблема. Пожалуйста, посмотрите stackoverflow.com /вопросы/19676347/ - person Braj; 06.11.2013
comment
Как с помощью этой библиотеки добавить изображение в чип? - person lini sax; 04.12.2015