2015-01-28 2 views
0

У меня есть приложение, которое использует библиотеку this как функцию перетаскивания, чтобы переупорядочить элементы. Я скорректировал макет элемента, чтобы иметь два изображения и текст (вместо одного изображения и текста), и я переместил изображение, которое они нажимают, чтобы перетащить в крайнее правое. Моя проблема заключается в том, что на первом изображении подключен прослушиватель перетаскивания. (И если я сначала поместил текст, а затем два изображения, слушатель применим только к тексту). Есть ли способ, который я могу выбрать, какой элемент имеет прослушиватель перетаскивания или сделать все его элементы.listview drag listener применяется ко всем представлениям в макете

Кажется, что он просто передал его первому ребенку макета. Я попытался просто поместить все три вида в линейный макет, надеясь, что линейный макет будет иметь слушателя, но он просто обошел это и перешел к первому элементу этого макета.

ответ

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

EDIT: Do not Do This Если список, который вы переупорядочиваете, не подходит на экране, если используется вся ширина, вы не можете прокручивать список вниз

Смежные вопросы