Имеется поле для ввода и кнопка, если мы не заполним данное поле и нажмем на кнопку, выводится вот такая ошибка в виде подсказки, как на скриншоте ниже. Подсказка накладывается поверх всех остальных элементов, интересует каким образом можно реализовать это, спасибо)
Это стандартный функционал виджета EditText и реализуется методом setError("Message"). Так же возможен перегруженный метод с собственной иконкой:
editText.setError("message", R.drawable.icon_error);
Проверка на пусстое поле может быть такой:
final EditText editText = (EditText)findViewById(R.id.edit);
editText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void afterTextChanged(Editable s) {
if (editText.getText().toString().length <= 0) {
firstName.setError("Не может быть пустым");
} else {
firstName.setError(null);
}
}
});
UPDATE: Так же вы можете использовать более стильный виджет из библиотеки поддержки TextInputLayout и выводить ошибки такого вида:
<android.support.design.widget.TextInputLayout
android:id="@+id/inputLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:errorEnabled="true">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/First_name" />
</android.support.design.widget.TextInputLayout>
TextInputLayout inputLayout = (TextInputLayout) findViewById(R.id.inputLayout);
inputLayout.setError("First name is required"); // show error
inputLayout.setError(null); // hide error
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости