Как заставить подсказку редактировать текст появляться при вводе

#android #android-edittext

#Android #android-edittext

Вопрос:

Я хотел бы, чтобы мое приложение могло отображать разные подсказки в edittext в разное время, поэтому я должен каждый раз указывать подсказку грамматически правильно, как показано ниже.

 editText.setHint("Hint 1");
  

Но проблема в том, что когда я начинаю печатать, подсказка начинает исчезать.Я хочу показывать эту подсказку каждый раз.Если я установлю подсказку в xml, она не исчезнет при вводе, но как это сделать в моем случае.

Комментарии:

1. Если я правильно понял ваш вопрос, вы должны использовать TextInputLayout . Вложите свою EditText внутреннюю TextInputLayout часть в XML-файл макета

2. @SripadRaj Да, у меня есть это TextInputLayout для вложения EditText. Моя проблема в том, что я динамически изменяю подсказку в соответствии с условием, при котором подсказка исчезает, когда пользователь вводит что-либо в edittext. Я всегда хочу показать эту подсказку.

3. Возможно ли это без TextInputLayout ? На самом деле я уже установил подсказку программно, и она работает хорошо. но теперь я хочу задать текст таким же образом, и возникла проблема, подсказка исчезает после установки текста.

4. @Arbaz.in ответ Рави Саху выглядит хорошо. Я не пробовал. Пожалуйста, попробуйте, если вы хотите попробовать.

Ответ №1:

Либо вам следует подумать о переходе на TextInputLayout (настоятельно рекомендуется это. Вот тоже пример.)

или

создайте относительный макет с EditText для ввода и TextView для подсказки внутри.Измените текстовое представление в соответствии с вашими потребностями.

 <RelativeLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
    <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Some text"
            android:layout_alignParentLeft="true"
            android:id="@ id/editText1"
            android:layout_gravity="center"
            />
    <TextView
            android:id="@ id/text_hint"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:text="yourHint"
            android:textSize="14sp"
            android:layout_marginRight="10dp"
            android:textColor="@color/customColor"
            />
</RelativeLayout>
  

Комментарии:

1. Мне нравится первый подход, который вы сказали, но проблема в том, что подсказка будет отображаться внизу edittext, и как только вы очистите введенный текст, а затем снова введете любой текст, ошибка не будет отображаться как подсказка

Ответ №2:

то, что вы ожидаете, невозможно, поскольку мы должны знать, что пользователь пишет в editext. Теперь дни https://github.com/hardik-trivedi/FloatingLabel этот тип подсказок более популярен, вы можете попробовать по ссылке выше.

Ответ №3:

TextInputLayout предоставьте мощные возможности материала EditText . Основная функция — плавающая подсказка. Смотрите Документ здесь https://developer.android.com/reference/android/support/design/widget/TextInputLayout.html

Ответ №4:

Вы не можете отображать при вводе текста в подсказке «Редактировать текст» в Android есть функциональность по умолчанию

 <android.support.design.widget.TextInputLayout
        android:theme="@style/TextLabel"
        android:id="@ id/input_layout_username"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <EditText
            android:id="@ id/username_edit_text"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@null"
            android:hint="Email Address"
            android:inputType="textEmailAddress"
            android:translationY="10dp"
            android:textColor="@color/white"
            android:textColorHint="@color/white"
            android:textSize="@dimen/font_13"/>
</android.support.design.widget.TextInputLayout>
  

Здесь android предоставляет функциональность по умолчанию при вводе текста в edit text подсказка над редактированием текста, вы также можете установить подсказку с помощью программного обеспечения

  EditText. setHint ("Hint 1");
  

Комментарии:

1. Если я установлю подсказку в xml, при вводе текста в edit text подсказка будет отображаться над редактируемым текстом. Если я это сделаю, эта подсказка станет постоянной, и я больше не смогу изменить подсказку. Если бы я использовал EditText. setHint («Подсказка 1») затем подсказка исчезнет при вводе в edittext.

Ответ №5:

лучший способ сделать это — использовать TextInputLayout .

https://www.bignerdranch.com/blog/becoming-material-with-android-design-support-library/

Ответ №6:

     <!--EMAIL-->
<android.support.design.widget.TextInputLayout
    android:id="@ id/email_wrapper"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/TextLabel">

    <EditText
        android:id="@ id/etUserName"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/login_screen_email_hint"
        android:imeOptions="actionNext"
        android:inputType="textEmailAddress"
        android:maxLines="1"
        android:nextFocusDown="@ id/etPassword"
        android:singleLine="true"
        android:textColor="@android:color/white"
        android:textColorHighlight="@android:color/white"
        android:textColorHint="@android:color/white" />

</android.support.design.widget.TextInputLayout>
  

И не забудьте добавить эту строку в свой файл gradle

  compile 'com.android.support:design:23.4.0'
  

Комментарии:

1. Мне нужно изменить подсказку в соответствии с выбранной записью из выпадающего списка. Итак, как я могу изменить подсказку при изменении выпадающего списка, если я установил подсказку в xml??

2. Итак, вам просто нужно использовать дизайн поддержки до 22.2.1, скомпилируйте ‘com.android.support:design:22.2.1. и ((EditText)findViewById(R.id.etUserName)). setHint(‘bla bla’); до 22.2.1 это была известная ошибка: code.google.com/p/android/issues /…