Значок SetError перекрывает другие значки редактирования текста - PullRequest
1 голос
/ 29 февраля 2020

setError значок перекрывает мой другой значок в тексте редактирования

<com.google.android.material.textfield.TextInputLayout
    android:id="@+id/text_input_layout_password"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/white"
    android:paddingTop="10dp"
    app:hintTextAppearance="@style/TextAppearence.App.TextInputLayout"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.0"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/view_separator_2"
    app:passwordToggleDrawable="@drawable/custom_show_hide_password_black"
    app:passwordToggleEnabled="true"
    app:passwordToggleTint="@color/black">

        <com.google.android.material.textfield.TextInputEditText
            android:id="@+id/login_password"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="10"
            android:background="@null"
            android:contentDescription="@string/acc_password"
            android:hint="@string/password"
            android:imeOptions="actionDone"
            android:inputType="textPassword"
            android:padding="10dp"
            android:textColor="@color/color_1D1D1D"
            android:textColorHint="@color/color_5A5D63"
            android:textSize="14sp"
            tools:text="Password" />

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

В этом изображении значок глаза и восклицательный знак перекрываются, я хочу, чтобы они были рядом, первый значок сообщения о душе а затем значок глаза, есть ли способ сделать это.

image

Ответы [ 2 ]

1 голос
/ 07 марта 2020

Вам просто нужно вызвать эту функцию.

passwordTxtInputLayout = findViewById(R.id.text_input_layout_password);
    etPassword = findViewById(R.id.login_password);
    if (etPassword != null) {
        etPassword.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) {
                passwordTxtInputLayout.setEndIconVisible(true);

            }

            @Override
            public void afterTextChanged(Editable s) {

            }
        });

и вызывать эту функцию всякий раз, когда длина пароля меньше и равна нулю

passwordTxtInputLayout.setEndIconVisible(false);

Убедитесь, что эта функция должна быть вызывается перед вызовом setError, иначе eyeIcon будет отключен.

1 голос
/ 29 февраля 2020

Попробуйте этот код. Поскольку у вас есть app:passwordToggleDrawable в TextInputLayout, вам следует позвонить setError() также в textInputLayout. Пожалуйста, используйте код ниже

TextInputLayout textInputLayout = findViewById(R.id.text_input_layout_password);
textInputLayout.setError("Password is empty");
...