Как реализовать TextWatcher в Android?
Опубликовано: 1 Декабря, 2021
Если есть приложение, содержащее форму входа, которую должен заполнить пользователь, кнопка входа должна быть отключена (что означает: она не должна быть интерактивной). Когда пользователь вводит учетные данные формы, кнопка должна быть включена для нажатия для пользователя. Итак, в этой статье мы реализуем TextWatcher в поле EditText. Взгляните на следующее изображение, чтобы понять, что такое TextWatcher и как это может повысить интерактивность пользователя. Обратите внимание, что мы собираемся реализовать этот проект на языке Java.
Шаги по реализации TextWatcher в Android
Шаг 1. Создайте проект пустого действия
- Создайте пустой проект Android Studio Activity. Обратитесь к Android | Как создать / запустить новый проект в Android Studio?
- Обратите внимание, что выберите Java в качестве языка программирования.
Шаг 2. Работа с activity_main.xml
- Реализуйте два текстовых поля редактирования, одно для электронной почты и одно для пароля.
- Вызовите следующий код внутри файла activity_main.xml.
XML
<? xml version = "1.0" encoding = "utf-8" ?> < RelativeLayout android:layout_width = "match_parent" android:layout_height = "match_parent" tools:context = ".MainActivity" tools:ignore = "HardcodedText" > <!--this is the email edittext field--> < EditText android:id = "@+id/etEmail" android:layout_width = "match_parent" android:layout_height = "wrap_content" android:layout_marginStart = "16dp" android:layout_marginTop = "64dp" android:layout_marginEnd = "16dp" android:hint = "Email" android:inputType = "textEmailAddress" /> <!--this is the email password field--> < EditText android:id = "@+id/etPassword" android:layout_width = "match_parent" android:layout_height = "wrap_content" android:layout_below = "@id/etEmail" android:layout_marginStart = "16dp" android:layout_marginEnd = "16dp" android:hint = "Password" android:inputType = "textPassword" /> <!--login button which set to be false for the enabled attribute--> < Button android:id = "@+id/loginButton" android:layout_width = "wrap_content" android:layout_height = "wrap_content" android:layout_below = "@id/etPassword" android:layout_centerHorizontal = "true" android:layout_marginTop = "16dp" android:enabled = "false" android:text = "LOGIN" /> </ RelativeLayout > |
Выходной интерфейс:
Шаг 3. Работа с файлом MainAcitvity.java
- Мы также можем обрабатывать оба EditTexts по отдельности. Но в этом случае, чтобы уменьшить количество строк кода, реализуется прослушиватель обратного вызова TextWatcher, и объект прослушивателя обратного вызова передается методу addTextChangedListener для каждого редактируемого текста.
- Вызов следующего кода внутри файла MainActivity.java, комментарии добавлены для лучшего понимания.
Ява
import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; import android.widget.Button; import android.widget.EditText; public class MainActivity extends AppCompatActivity { // two edit text fields EditText etEmail, etPassword; // one login button Button bLogin; // implement the TextWatcher callback listener private TextWatcher textWatcher = new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { // get the content of both the edit text String emailInput = etEmail.getText().toString(); String passwordInput = etPassword.getText().toString(); // check whether both the fields are empty or not bLogin.setEnabled(!emailInput.isEmpty() && !passwordInput.isEmpty()); } @Override public void afterTextChanged(Editable s) { } }; @Override protected void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.activity_main); // register all the UI elements // with their appropriate IDs etEmail = findViewById(R.id.etEmail); etPassword = findViewById(R.id.etPassword); bLogin = findViewById(R.id.loginButton); // set the TextChange Listener for both // the edit text fields etEmail.addTextChangedListener(textWatcher); etPassword.addTextChangedListener(textWatcher); } } |
Выход: запустить на эмуляторе
Хотите более динамичную и конкурентную среду для изучения основ Android?
Щелкните здесь, чтобы перейти к уникальному руководству, составленному нашими экспертами с целью мгновенно подготовить вашу отрасль!