Как создать подсказку EditText как текст с изображением в Android

Как создать EditText подсказку / заполнитель с текстом и изображением в Android. Я пишу так

<EditText  
    android:id="@+id/name" 
    android:layout_height="wrap_content" 
    android:layout_width="wrap_content"     
    android:lines="1"
     ................................
...............................

android:drwableLeft="@drawable/image1"
android:hint="enter name here"/>

Здесь мы можем видеть изображение и текст (подсказку) в тексте редактирования, но изображение все еще видно даже после того, как пользователь вводит что-то в это поле. Мое требование: если в EditText нет текста, показать подсказку с изображением, если EditText не пуст, скрыть текст подсказки и изображение

2 ответа

Решение

Что вы можете сделать, это установить drawableLeft как вы сделали в своем XML и добавить addTextChangedListener на ваш EditText. Когда происходит набор текста, этот слушатель будет предупрежден, и вы можете проверить в слушателе, если текстовый размер больше 0. Если это так, то просто установите drawableLeft назначается в XML программно null,

@Override
public void afterTextChanged(Editable s) {
    if(s.toString().length() > 0) {
        editText.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
    } else {
        //Assign your image again to the view, otherwise it will always be gone even if the text is 0 again.
        editText.setCompoundDrawablesWithIntrinsicBounds(R.drawable.image, 0, 0, 0);
    }
}

Я сделал это, поместив свой EditText внутри FrameLayout, а затем также включив TextView внутри FrameLayout. TextView служит текстом подсказки. У меня есть атрибут drawableStart в TextView. Когда пользователь начинает печатать, TextView скрывается с использованием кода, подобного тому, который был принят в ответе от Dion.

Другие вопросы по тегам