我在listView的每一行中都有一个战舰图像,标题和描述的listView。我希望用户能够开始拖放onItemLongClick()侦听器。为此,我有一个不可见的图像,它将被设置为特定的大小和位图,以表示DragShadowBuilder()中的拖动阴影。问题是,无论何时我第一次尝试拖放拖动阴影的大小都等于不可见图像的大小,在第二次以后,该阴影都适用于该行,但是如果我拖动另一行它会执行相同的操作,则第一次它不会改变图片的大小,只有第二次才会显示。
下面是OnItemLongClick()侦听器的代码。
battleshipList.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener(){
@Override
public boolean onItemLongClick(AdapterView<?>adapter,View v, int position,long id){
bp = BitmapFactory.decodeResource(getResources(), dragImages[position]);
bp = Bitmap.createScaledBitmap(bp, gView.cell_size, gView.cell_size * getSize(position), false);
ViewGroup.LayoutParams params = dragShadow.getLayoutParams();
params.width = gView.cell_size;
params.height = gView.cell_size * getSize(position);
dragShadow.setLayoutParams(params);
dragShadow.setImageBitmap(bp);
ClipData data = ClipData.newPlainText("ShipType",String.valueOf(position));
View.DragShadowBuilder myShadowBuilder = new View.DragShadowBuilder(dragShadow);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
dragShadow.startDragAndDrop(data,myShadowBuilder,dragShadow,0);
}
return true;
}
});
谢谢。