1

我在样式中的默认色调重音颜色是蓝色,并且在发生错误时我以编程方式将其更改为红色,如下面的代码

    Drawable wrappedDrawable = DrawableCompat.wrap(mUsername.getBackground());
    DrawableCompat.setTint(wrappedDrawable, ContextCompat.getColor(getActivity(), R.color.red_error));

但是当我重新启动我的应用程序时,色调为红色,如何将其设置回 style.xml 中的默认颜色?

4

2 回答 2

4

对于您的情况,更喜欢使用 colorFilter 而不是 tintcolor :

//get reference on drawable
Drawable wrappedDrawable = DrawableCompat.wrap(mUsername.getBackground());
//get color ressource with Android M SDK
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
    wrappedDrawable.setColorFilter(this.getColor(R.color.blue), PorterDuff.Mode.MULTIPLY);
else
    //classic method
    wrappedDrawable.setColorFilter(this.getResources().getColor(R.color.blue), PorterDuff.Mode.MULTIPLY);

要删除过滤器颜色,只需使用 clearColorFilter :

wrappedDrawable.clearColorFilter();
于 2016-07-21T06:57:18.683 回答
1

这对我有用

editText.getBackground().setColorFilter(getResources().getColor(R.color.your_color), PorterDuff.Mode.SRC_ATOP);

使用 appcompat v7 更改 EditText 底线颜色

于 2015-12-29T05:53:09.387 回答