在阅读了关于该主题的几十个Q & A之后,我无法找到这种情况的答案。setImageDrawable未设置当前可绘制的
在我的应用程序中,用户将不同的图标从一个表格布局拖动到另一个表格布局(底部表格布局是一种“图标键盘”)。
将图标拖动到上表(它将替换占位符图像)后,用户应该可以继续将其拖动到不同的位置。
现在,第一部分工作很好。我可以将图标从“键盘”拖到上表格布局中。但出于某种原因,当我尝试在此布局中的不同位置之间拖动它时,应该更改为图标的imageView与相同的drawable(占位符)保持一致。
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;
}
,你可以看到,我devided的DRAG_DROP作用到两个案例(从“键盘”拖和上布局里面拖。我测试了它,它不会进入不同的情况,但可绘制的对象似乎是“未更新”。
请帮帮忙!
我现在明白了,问题是,而第二次提取绘制对象(getDrawable),从上布局,我不接受当前可绘制的,但原来的。我该如何处理?
这并没有解决问题。此外,该方法对第二种情况起作用,所以为什么它不适用于第一种? – Maoritzio
这取决于设备,如果您的设备高于api级别15,则第一种情况将执行,否则第二种情况将执行。 –
我的意思是我的代码中的其他语句(不是你所建议的答案中)被执行并且工作正常,并且它相当于“if”语句,所以为什么它们不能工作? – Maoritzio