我有一个应用程序使用this库作为拖放活动来重新排序项目。 我调整了项目布局,使其有两个图像和文本(而不是一个图像和文本),然后我将他们点击的图像移动到最右边。我的问题是现在第一个图像有拖拉侦听器附加到它。 (如果我先放置文本然后再将两个图像放在第二位,则监听器仅应用于文本)。有没有办法可以选择哪个元素具有拖动侦听器,或者让所有元素都有它。
它似乎只是将它赋予布局的第一个孩子。我试图将所有三个视图放在一个线性布局中,希望线性布局会有听众,但它只是绕过了那个并转到了该布局的第一个元素。
答案 0 :(得分:0)
好的,我找到了。我尝试首先放置一个不可见的图像,拉伸整个视图的宽度,但它仍然只应用于视图的左侧部分。
然后我做了一些挖掘,并在DragNDropListView.java文件中找到了这段代码
@Override
public boolean onTouchEvent(MotionEvent ev) {
final int action = ev.getAction();
final int x = (int) ev.getX();
final int y = (int) ev.getY();
if (action == MotionEvent.ACTION_DOWN && x < this.getWidth()/4) {
mDragMode = true;
}
...
}
只需将this.getWidth()/4
更改为this.getWidth()
即可使用整个视图而不是前1/4
编辑:不执行此操作您要重新排序的列表不适合屏幕,如果使用整个宽度,则无法向下滚动列表