Цвет подчеркивания текста редактирования, когда он содержит текст ("> Леденец") - PullRequest
0 голосов
/ 23 декабря 2018

Я хочу изменить цвет подчеркивания моего editText, когда внутри них есть текст, в противном случае создайте цвет по умолчанию.

независимо от состояния, я хочу сделать следующееEdittext: когда у них есть текст -> Подчеркнуть цвет (синий)Edittext: когда они пустые -> цвет подчеркивания (серый)

Он работает на Lollipop и ниже, но не работает на версиях Android выше Lollipop.

Я сделал следующее:XML

<android.support.design.widget.TextInputLayout
        android:id="@+id/input_password_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="26dp"
        android:gravity="center_vertical"
        app:errorTextAppearance="@style/itl_error_appearance"
        app:hintTextAppearance="@style/itl_normal_appearance"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toBottomOf="@id/input_email_layout"
        app:passwordToggleEnabled="true">

        <android.support.design.widget.TextInputEditText
            android:id="@+id/login_password"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="@string/password"
            android:inputType="textPassword"
            android:singleLine="true"
            android:textColor="@color/colorTextDark"
            android:textSize="16sp" />
</android.support.design.widget.TextInputLayout>

Я сделал TextWatcher для этой работы, но он не работает (Android> 21 "Lollipop")

JAVA

@Override
public void afterTextChanged(Editable s) {
    String email = edtLoginEmail.getText().toString();
            if (!TextUtils.isEmpty(email)) {
                DrawableCompat.setTint(edtLoginEmail.getBackground(), ContextCompat.getColor(getActivity(), R.color.colorBlue));
        //      edtLoginEmail.getBackground().mutate().setColorFilter(getResources().getColor(R.color.colorBlue), PorterDuff.Mode.SRC_ATOP);
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                    ColorStateList colorStateList = ColorStateList.valueOf(getResources().getColor(R.color.colorBlue));
                    edtLoginEmail.setBackgroundTintList(colorStateList);
                    ViewCompat.setBackgroundTintList(edtLoginEmail, colorStateList);
                }
                edtLoginEmail.getBackground().setColorFilter(getResources().getColor(R.color.colorBlue), PorterDuff.Mode.SRC_ATOP);
            } else {
                DrawableCompat.setTint(edtLoginEmail.getBackground(), ContextCompat.getColor(getActivity(), R.color.colorGray));
        //      edtLoginEmail.getBackground().mutate().setColorFilter(getResources().getColor(R.color.colorGray), PorterDuff.Mode.SRC_ATOP);
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                    ColorStateList colorStateList = ColorStateList.valueOf(getResources().getColor(R.color.colorGray));
                    edtLoginEmail.setBackgroundTintList(colorStateList);
                    ViewCompat.setBackgroundTintList(edtLoginEmail, colorStateList);
                }
                 edtLoginEmail.getBackground().setColorFilter(getResources().getColor(R.color.colorGray), PorterDuff.Mode.SRC_ATOP);
            }
        }
    };

Моя основная тема:

<style name="AppTheme" >
    .....
    <item name="colorControlNormal">@color/colorGray</item>
    <item name="colorControlActivated">@color/colorBlue</item>
    <item name="colorControlHighlight">@color/colorBlue</item>
    .....
</style>

Любая помощь?

...