Android setColorFilter在onDrag中不工作

Android setColorFilter在onDrag中不工作,android,colorfilter,Android,Colorfilter,在我的应用程序中,我有一个textview,当用户拖动另一个项目时,我想在它的背景上放置一个颜色过滤器。在我的DragListener中,我使用以下代码,但颜色过滤器不起作用: case DragEvent.ACTION_DRAG_ENTERED: v.getBackground().setColorFilter(Color.BLUE, PorterDuff.Mode.LIGHTEN); 当我在MainActivity而不是DragLlistener中输入相同的代码时,它工作正常,如

在我的应用程序中,我有一个textview,当用户拖动另一个项目时,我想在它的背景上放置一个颜色过滤器。在我的DragListener中,我使用以下代码,但颜色过滤器不起作用:

case DragEvent.ACTION_DRAG_ENTERED:
     v.getBackground().setColorFilter(Color.BLUE, PorterDuff.Mode.LIGHTEN);
当我在MainActivity而不是DragLlistener中输入相同的代码时,它工作正常,如下所示:

findViewById(R.id.textView2).getBackground().setColorFilter(Color.BLUE, PorterDuff.Mode.LIGHTEN)
同样在DragListener中,当我将背景颜色更改为其他颜色时,colorfilter将生效,当我将其更改回我想要的颜色时,colorfilter将保持有效。clearColorFilter也是如此(为了使其生效,我必须更改背景色)。 以下是我所说的:

case DragEvent.ACTION_DRAG_ENTERED:

    v.getBackground().setColorFilter(Color.BLUE, PorterDuff.Mode.LIGHTEN);
    v.setBackgroundColor(Color.BLACK);
    v.setBackgroundColor(con.getResources().getColor(R.color.background));

我的问题是,为什么我必须将背景色设置为不同的颜色,以使颜色过滤器在DragListener中生效,而不是在MainActivity中生效?我遗漏了什么吗?

我研究发现,可着色对象往往会忽略颜色过滤器。这可能是问题的原因。但问题仍然在于,为什么colorFilter应用于MainACtivity中的ColorDrawable时有效,而不适用于onDrag函数。当我使用png图像作为背景时,setColorFilter()可以正常工作,但当我使用纯色时,问题就出现了。这可能是因为当使用纯色时,getBacground()函数返回一个ColorDrawable而不是Drawable(或者可能是bitmapDrawable)