我在Android 5中遇到了一个非常奇怪的问题。如果用户输入错误我想将错误设置为edittext并将其颜色更改为红色,当用户开始输入内容时,我想将颜色更改回绿色。我就是这样做的:
public Task<int> SaveChangesAsync()
{
return dbContext.SaveChangesAsync();
}
在低于5的Android版本中,一切都很完美,但不是在Lollipop中。如果我更改了一个edittext颜色,则所有应用中的所有edittexts都会更改颜色。有没有办法解决这个奇怪的事情?或者它是一些材料设计和Android 5技巧,我不知道?
答案 0 :(得分:3)
问题是后台Drawable
在许多视图中被重用。为确保多个视图之间不共享Drawable
,您应使用mutate
方法。
请参阅:mutate()
示例代码:
Drawable background = mainMenuButton.getBackground();
background.mutate();
background.setColorFilter(new PorterDuffColorFilter(getResources().getColor(R.color.light_green), PorterDuff.Mode.MULTIPLY));
mainMenuButton.setBackground(background);
Android 5.0 Lollipop: setColorFilter "leaks" onto other buttons
答案 1 :(得分:0)
对于类似微调器的颜色变化,请执行相同操作。
在Android Lollipop版本中,您必须单独为kitkat版本和棒棒糖版本实现代码,请执行此代码以更改微调器的背景。它的图像背景变化的例子。
if (Build.VERSION.SDK_INT => Build.VERSION_CODES.KitKat)
{
//for Lollipop Vession
// do on textChangeListner code
eText.setBackgroundDrawable(Color.RED);
}
else
{
// do on textChangeListner code
eText.setBackgroundResource(Color.RED);
}
我希望它可以帮助你,如果它是有用的代码那么请标记我.. Thanx ..:)