我一直在嘗試使用ItemTouchHelper在RecyclerView列表中拖動和滑動操作。我已經使用這guide,它的工作完美,除了我無法使LongClick上的滑動激活。我已經成功地做到這一點的拖動動作:在RecyclerView列表中拖動並滑動
textview.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
dragStartListener.onStartDrag(holder);
return false;
}
});
我不知道該怎麼做了刷卡,因爲它不具有onStartSwipe()接口和我的任何企圖實施一個通過模仿onStartDrag()接口失敗。
如何製作?感謝您的時間。
我已經設法實現了onStartSwipe()接口,它自己工作。但是,一旦我嘗試在同一個視圖上同時執行拖動和輕掃,它就會出現奇怪的現象。更確切地說,一旦我觸摸視圖,對於整個按住,只有拖動或僅滑動動畫將被激活。
不僅如此,在這兩個動作之間進行選擇是很困難的,因爲它會得到您在兩者之間選擇的第一個微動運動。
我試圖此代碼爲上述的說明:
tv.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
mDragStartListener.onStartDrag(holder);
return false;
}
});
tv.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
mSwipeStartListener.onStartSwipe(holder);
return true;
}
});
我也試圖使用這樣的的FrameLayout:
tv.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
mDragStartListener.onStartDrag(holder);
return true;
}
});
fl.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
mSwipeStartListener.onStartSwipe(holder);
return true;
}
});
在這裏,我拖動的TextView和我輕掃的FrameLayout。但是由於文本視圖位於框架佈局的頂部,因此只能拖動,並且有時會在您觸摸項目的角部時滑動。
關於如何在同一項目上進行拖拽和滑動工作的任何想法?我想要能夠拖動或滑動,一旦元素是LongClicked。我可以使用單獨的ImageView進行拖拽,並使用TextView進行拖拽,但我寧願不必這樣做,因爲它會破壞我的設計。
爲什麼你的監聽器添加到TextView的? –
@OliverU。那是因爲textview它是我在RecyclerView List中的行元素。也許這會更好,如果我使用包含TextView的LinearView? – Starivore
Whybdo你想要longclickbehavior刷卡? –