#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 /…