Используйте setBackgroundColor () внутри OnDragListener - PullRequest
0 голосов
/ 07 января 2019

Я новичок в 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() довольно сложным для понимания, потому что раньше я всегда думал, что его эффект постоянен.

Не могли бы вы объяснить мне, почему цвет сбрасывался в этих ситуациях и как сделать изменение цвета постоянным.

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...