Плавающая подсказка AutoCompleteTextView

Я много пробовал, но не могу заставить работать AutoCompleteTextView подсказку с плавающей запятой, используя TextInputLayout от поддержки.

Это возможно или мне нужно использовать внешнюю библиотеку?


comment
Вы определенно можете сделать это с помощью библиотеки дизайна. Опубликуйте свой код, чтобы я мог помочь вам лучше.   -  person Danilo Prado    schedule 13.08.2015
comment
Пожалуйста, объясните, что означает не может заставить работать. Другими словами, вы должны предоставить нам минимальный, полный и поддающийся проверке пример вашей проблемы.   -  person CommonsWare    schedule 13.08.2015


Ответы (2)


No .

достаточно самой библиотеки дизайна

включить вот так

<android.support.design.widget.TextInputLayout
    android:id="@+id/til_id"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="125dp"
    >

    <AutoCompleteTextView
        android:id="@+id/auto_text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Id"
        android:singleLine="true"/>
</android.support.design.widget.TextInputLayout>
person N J    schedule 13.08.2015
comment
Спасибо, у меня есть специальный макет, который не работает, я пытаюсь понять, в чем была моя ошибка. - person Marcelo Baccelli; 13.08.2015
comment
что вы пытаетесь показать по этой ссылке? совершенно бесполезен. Можете ли вы на самом деле указать на определенный класс или строку в коде? - person delkant; 18.09.2016
comment
@delkant был код для ответа, но со временем репо обновляется. Спасибо за указание - person N J; 19.09.2016
comment
Спасибо за пояснение! - person delkant; 19.09.2016
comment
2020, и это все еще работает. хотя я хотел бы отметить, что будет небольшая проблема с дизайном, поскольку TextInputEditText добавляет отступ, которого AutoCompleteTextView нет. Таким образом, добавление отступа android:padding="16dp" к AutoCompleteTextView сделает его точно таким же, как и раньше - person ansh sachdeva; 27.03.2020

Может быть, немного поздно, но вот хитрость:

Создайте следующий класс,

public class AutoCompleteTextInputLayout extends TextInputLayout {

    private boolean mIsHintSet;
    private CharSequence mHint;

    public AutoCompleteTextInputLayout(Context context) {
        super(context);
    }

    public AutoCompleteTextInputLayout(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    public void addView(View child, int index, ViewGroup.LayoutParams params) {
        if (child instanceof EditText) {
            mHint = ((EditText) child).getHint();
        }
        super.addView(child, index, params);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

        if (!mIsHintSet && ViewCompat.isLaidOut(this)) {
            setHint(null);

            EditText editText = getEditText();
            if (editText == null) {
                return;
            }
            CharSequence currentEditTextHint = editText.getHint();
            if (!TextUtils.isEmpty(currentEditTextHint)) {
                mHint = currentEditTextHint;
                editText.setHint("");
            }
            setHint(mHint);
            mIsHintSet = true;
        }
    }
}

Теперь добавьте эти строки в файл макета и посмотрите на волшебство

<com.example.AutoCompleteTextInputLayout
    android:id="@+id/text_input_autocomplete"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <AutoCompleteTextView
        android:id="@+id/autocomplete_tv"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:singleLine="true"
        android:textColorHint="@color/textColorDarkHint"/>
</com.example.AutoCompleteTextInputLayout>
person koni    schedule 24.03.2016