我是Android的新手。
假设我有2个视图:myImage
和myContainer
。
我想做的事情:当我将myImage
拖放到myContainer
中时,myContainer
的背景颜色将被更改。
为了实现此目标,我尝试了2种方法:
1)像这样将setBackgroundColor()
放在ACTION_DROP
内:
class MyDragListener implements OnDragListener {
...
@Override
public boolean onDrag(View v, DragEvent event) {
int action = event.getAction();
switch (event.getAction()) {
...
case DragEvent.ACTION_DROP:
...
myContainer.setBackgroundColor(Color.GREEN);
使用这种方法,当我将myImage
拖放到myContainer
时,myContainer
的背景颜色变为绿色,但是只是短暂的,之后它自动变为了旧颜色。
2)像这样将setBackgroundColor()
放在ACTION_DRAG_ENDED
内:
class MyDragListener implements OnDragListener {
...
@Override
public boolean onDrag(View v, DragEvent event) {
int action = event.getAction();
switch (event.getAction()) {
...
case DragEvent.ACTION_DRAG_ENDED:
...
myContainer.setBackgroundColor(Color.GREEN);
使用这种方法,当我将myImage
拖放到myContainer
时,myContainer
的背景颜色变为绿色,但是之后,如果我开始新的拖放操作,拖放动作,它将自动变回原来的颜色。
我发现setBackgroundColor()
的这种行为很难理解,因为以前我一直认为它的作用是永久的。
您能否向我解释为什么在这种情况下颜色会一直被重置,以及如何使颜色的变化永久不变。
谢谢。