Intereting Posts
Доступны ли значения, определенные в MANIFEST.MF программно? Как показывать отметки для дискретного слайдера? Использование Android Youtube API для воспроизведения потоков в реальном времени Android изменит и установит локаль по умолчанию в приложении. Сбой сборки гребня Создание локального уведомления в ответ на push-уведомление (из firebase) в кордове / ионной Просмотр места внутри FrameLayout в Android Слушатель файловой системы Я хочу показать пользовательский диалог, как iphone HUD Progress Bar Есть ли какие-либо ограничения в использовании «/ proc / mounts» в android Приложение не указывает уровень API Очистить Недавние приложения уничтожают память приложений, и мой ресивер перестает работать Android Studio не может разрешить символ «TabLayout» Запуск приложений Android в веб-браузере Невозможно скомпилировать, Невозможно выполнить dex, не может объединиться, не-jumbo инструкция

EditText getHint () возвращает значение null при использовании библиотеки поддержки дизайна

При использовании EditText в сочетании с Design lib's (ver 22.2.1) TextInputLayout получение подсказки программно возвращает null.

Я пытаюсь добавить звездочку '*' в обязательное поле программно, поэтому EditText.getHint() но тот факт, что он возвращает значение null, является проблемой в этом случае.

 EditText editText = (EditText) findViewById(R.id.edit2); String hint = String.format("%s *", editText.getHint()); editText.setHint(hint); 

Asterisk накладывает подсказку

Простая иллюстрация кода: Layout.xml:

 <android.support.design.widget.TextInputLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <EditText android:id="@+id/edit2" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/hello_world" android:inputType="text"/> </android.support.design.widget.TextInputLayout> 

Ява:

 EditText editText = (EditText) findViewById(R.id.edit2); if (editText.getHint() == null) throw new AssertionError("Hint should not be null"); 

Dependency: compile 'com.android.support:design:22.2.1'

Ранее связанная проблема здесь !

Solutions Collecting From Web of "EditText getHint () возвращает значение null при использовании библиотеки поддержки дизайна"

На самом деле подсказка перемещается в родительский вид TextInputLayout который окружает вид EditText :

Вы можете получить подсказку следующим образом:

 android.support.design.widget.TextInputLayout parent = (android.support.design.widget.TextInputLayout) yourEditText.getParent(); String hint = parent.getHint().toString(); 

И если вы хотите добавить * сделайте так:

 parent.setHint(parent.getHint() + "*"); 

Счастливая черепаха! 🙂

Подсказка связана с ее родительским макетом

((TextInputLayout) view.getParent ()). GETHINT ()

Это исправлено в поддержке дизайна 23.0.0 но проект должен быть скомпилирован для api 23 .

build.gradle

 android { compileSdkVersion 23 buildToolsVersion '23' .... } dependencies{ compile 'com.android.support:appcompat-v7:23.0.0' ... } 

Настройка подсказки на EditText как и раньше:

 <android.support.design.widget.TextInputLayout android:id="@+id/inputField" android:layout_width="match_parent" android:layout_height="wrap_content"> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/hello_world" android:inputType="text"/> 

Теперь добавим дополнительный символ в подсказку:

 TextInputLayout inputField = (TextInputLayout) findViewById(R.id.inputLayout); String hint = String.format("%s *", inputField.getHint()); inputField.setHint(hint);