当前位置: 首页 > 知识库问答 >
问题:

带有自定义背景的android textInputEditText无法正常工作

姚昊焱
2023-03-14

我在textInputEditText中使用textInputLayout,我必须为editText设置背景,以实现editText的边框视图。但是当我调用textInputLayout上的setError()时,整个editText颜色将变为红色。但我只想更改错误文本的颜色,而不是整个视图。

设置前错误:

<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>

请帮帮我,我做错了什么?

共有1个答案

屠锐
2023-03-14

我通过扩展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();
        }
    }
}
 类似资料:
  • 问题内容: 我正在尝试使用node-imagemagick库调整图像的大小,但无法正常工作。 我用来调整大小的代码是 引发错误 问题答案: 在Windows上,您还需要安装imagemagick exe。nodejs imagemagick库只是imagemagick exe的包装器。因此,只有安装了imagemagick exe并转换并标识可执行文件在路径中后,它才能起作用。

  • 问题内容: 我正在尝试自动预加载模型,但是这样做很困难。 这些是我正在使用的模型: 这是我正在执行的用于测试自动预加载功能的代码: 这两个打印的输出是: 当我可以手动很好地预加载模型时,为什么通过db.First(…)获取模型不会自动预加载? 问题答案: 首先,我建议阅读文档。 这里有点解释。看来您使用旧版本的可能性更大。更新的文档说明了如何使用此标记,默认情况下将其设置为true。因此,如果您想

  • 问题内容: 我在linux ubuntu 17.10上运行代码 此代码返回“无限” 但是每当我从终端运行命令时,我都会得到1024。 为什么这些数字不同? 问题答案: 如果从命令行运行相同的命令,则会得到相同的结果: 这是因为仅查看紧随其后的参数。的不是此参数的一部分,并且被代替而不是分配作为位置参数()。 要运行,需要成为该参数的一部分: 换句话说,您应该使用:

  • 我使用以下代码来设置jTable中的备用背景行颜色: 它是有效的。但是,我想使用自定义颜色(如rgb(242242))代替浅灰色作为替代颜色,但在执行以下操作时: 替代颜色完全被忽略,所有行都有白色背景。看起来此方法仅适用于属于颜色枚举的颜色。怎么会这样? 下面是一个完整的工作示例,随后是结果屏幕:

  • 我为某些日志目的创建了一个自定义注释。此注释应用于通过扩展JpaRepository在项目中创建的Spring jpa存储库。所以现在发生的是,对于read方法,它可以正常工作,但对于保存部分,永远不会调用@周围建议。以下是我的@周围建议 我的log方法是采用一个布尔参数,并以此为基础记录一些东西。以下是回购代码 现在,当我调用不属于我的存储库MyRepo的repo方法时,比如save、saveA

  • 我正在尝试在ndroid ListView上应用搜索,但它对我不起作用,这里是我尝试的代码。 下面是Users类