제목과 관련하여 수십 개의 Q & A를 읽은 후에이 상황에 대한 답을 찾을 수 없습니다.setImageDrawable이 현재 드로어 블을 설정하지 않음
내 응용 프로그램에서 사용자는 한 테이블 레이아웃에서 다른 아이콘으로 다른 아이콘을 드래그하고 있습니다 (아래쪽 테이블 레이아웃은 일종의 "아이콘 키보드"입니다).
위의 표로 아이콘을 드래그하면 (아이콘이 자리 표시 자 이미지를 바꿉니다) 사용자는 계속해서 다른 위치로 드래그 할 수 있습니다.
지금은 첫 부분이 훌륭합니다. "키보드"의 아이콘을 위쪽의 테이블 레이아웃으로 드래그 할 수 있습니다. 하지만 어떤 이유로이 레이아웃 안의 다른 위치간에 드래그하려고하면 아이콘으로 변경되어야하는 imageView는 동일한 드로어 블 (placeholder)과 함께 유지됩니다. 당신이 볼 수있는
public boolean onDrag(View v, DragEvent event) {
ImageView imageOnBoard = (ImageView) v;
switch (event.getAction()) {
case DragEvent.ACTION_DRAG_STARTED:
break;
case DragEvent.ACTION_DRAG_ENTERED:
imageOnBoard.setBackgroundColor(0xFF00FF00);
break;
case DragEvent.ACTION_DRAG_EXITED:
imageOnBoard.setBackgroundColor(color.transparent);
imageOnBoard.setOnTouchListener(null);
break;
case DragEvent.ACTION_DROP:
imageOnBoard.setBackgroundColor(color.transparent);
TableRow tr1 = (TableRow) imageOnBoard.getParent();
int r=tr1.indexOfChild(imageOnBoard);
TableLayout tl1 = (TableLayout) tr1.getParent();
int c=tl1.indexOfChild(tr1);
ImageView strategyIcon = (ImageView) (event.getLocalState());
TableLayout source = (TableLayout) strategyIcon.getParent().getParent();
if (source.equals((TableLayout) findViewById(R.id.tableLayout)))
{
Drawable draw = strategyIcon.getDrawable();
imageOnBoard.setImageDrawable(draw);
}
else
{
Drawable draw = strategyIcon.getDrawable();
imageOnBoard.setImageDrawable(draw);
}
imageOnBoard.setVisibility(View.VISIBLE);
imageOnBoard.setOnTouchListener(new MyTouchListener());
break;
case DragEvent.ACTION_DRAG_ENDED:
break;
default:
break;
}
return true;
}
, 나는. 나는 그것을 테스트 "키보드"에서 끌어 상단 레이아웃 내부에 끌어 두 경우 (에 DRAG_DROP 조치를 나누어, 그것은 다른 경우로 이동하지만, 않습니다 드로어 블 오브젝트가 "갱신 전의"것으로 보인다.
이 도와주세요!
내가 지금 상단 레이아웃에서, 두 번째 시간 동안 드로어 블 (getDrawable)를 추출하는 동안 문제가 있음을 이해하고, 나는를받지 않습니다 현재 드로어 블이면서 원래 드로잉은 어떻게 처리 할 수 있습니까?
문제가 해결되지 않았습니다. 게다가이 방법은 두 번째 경우에서 작동하므로 첫 번째 경우에는 왜 작동하지 않아야합니까? – Maoritzio
기기가 API 레벨 15 이상인 경우 기기에 따라 다르면 첫 번째 사례가 실행되고 두 번째 사례는 실행됩니다. –
내 의도는 내 코드의 else 문 (사용자가 제안한 대답이 아님)이 실행되고 정상적으로 작동하고 "if"문과 동일하기 때문에 둘 다 작동하지 않아야하는 이유는 무엇입니까? – Maoritzio