как отобразить чередующиеся значки в editText? - PullRequest
1 голос
/ 02 апреля 2020

поэтому у меня есть editText с иконками закрытия и успеха и максимальным паролем 6, первое, что я делаю, если пароль не максимум 6, значок остается закрытым, как я нарисовал, если пароль максимум 6, то значок закрытия меняется к значку успеха, моя проблема, как изменить значок закрытия на значок успеха, если выполнены максимум 6 условий

editTest image

это мой код

 <com.google.android.material.textfield.TextInputLayout
    android:id="@+id/textInputPassword"
    style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginStart="20dp"
    android:layout_marginTop="10dp"
    android:layout_marginEnd="20dp"
    android:hint="Password"
    app:counterEnabled="true"
    app:counterMaxLength="6"
    app:endIconMode="clear_text"
    app:endIconDrawable="@drawable/ic_canceles"
    app:errorEnabled="true"
    app:endIconTint="#DF0000"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/textInputEmail">

    <com.google.android.material.textfield.TextInputEditText
        android:id="@+id/editTextPassword"
        android:layout_width="match_parent"
        android:maxLines="1"
        android:layout_height="wrap_content" />

</com.google.android.material.textfield.TextInputLayout>

Ответы [ 2 ]

0 голосов
/ 02 апреля 2020

Вы можете сделать это:

         textInputPassword.seticon(R.drawable.image);
0 голосов
/ 02 апреля 2020

Попробуйте это в вашем методе создания

TextInputLayout editText = findViewById(R.id.textInputPassword);


                editText.getEditText().addTextChangedListener(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) {
                        if (s.toString().length() > 6) {
                            editText.setEndIconDrawable(R.drawable.success);
                        } else {
                            editText.setEndIconDrawable(R.drawable.ic_canceles);
                        }
                    }

                    @Override
                    public void afterTextChanged(Editable s) {

                    }
                });
...