我正在使用textInputEdittext textInputlayout我不得不为我的EditText设置背景,以实现我的EditText的边界视图。但是,当我在textInputlayout上调用setError((时,整个Edittext颜色会更改为红色。但是我只想更改错误文本的颜色,而不是整个视图。
设置错误之前:
屏幕截图
设置错误后:
屏幕截图
这是我的XML代码:
<android.support.design.widget.TextInputLayout
android:layout_alignParentTop="true"
android:id="@+id/ex_pass_holder"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:passwordToggleEnabled="false"
android:gravity="right">
<android.support.design.widget.TextInputEditText
android:id="@+id/ex_pass_et"
android:layout_width="fill_parent"
android:layout_height="50dp"
android:hint="رمز عبور فعلی"
android:inputType="textPassword"
android:textColor="#000"
android:textSize="15sp"
android:gravity="right|center"
android:background="@drawable/edittext_bg"
android:padding="8dp"
/>
</android.support.design.widget.TextInputLayout>
请帮助我,我在做什么错?
我通过扩展textInputlayout和覆盖某些方法
来解决此问题public class CustomTextInputLayout extends TextInputLayout {
public CustomTextInputLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public void setError(@Nullable CharSequence error) {
super.setError(error);
try {
EditText et = getEditText();
Drawable editTextBackground = et.getBackground();
editTextBackground.clearColorFilter();
}catch (Exception e){
e.printStackTrace();
}
}
@Override
protected void drawableStateChanged() {
super.drawableStateChanged();
try {
EditText et = getEditText();
Drawable editTextBackground = et.getBackground();
editTextBackground.clearColorFilter();
}catch (Exception e){
e.printStackTrace();
}
}
}