5つのビューが内部にあるLinearLayoutがあり、1x5グリッドを形成します。ドラッグされたオブジェクトをドラッグ元に揃える方法は?
このLinearLayoutがドラッグされます。
現在、5つのビューのそれぞれでonTouchListenersを設定し、ドラッグの5つのうちのどれが開始され、LinearLayoutでmotionEvent.getAction()を呼び出すかを確認しています。
LinearLayoutがドラッグ開始点ではなく中央でドラッグされるため、これは不完全です。
MotionEventの開始時にLinearLayoutを変換する方法はありませんので、ドラッグの開始元はドラッグ中に指の下にありますか?これを行うにはのLinearLayout
private final class MyTouchListener implements View.OnTouchListener {
//public boolean onTouch(View view, MotionEvent motionEvent) {
public boolean onTouch(View view, MotionEvent motionEvent) {
LinearLayout ship = (LinearLayout)view.getParent();
dragCellIndex = ship.indexOfChild(view);
dragCellTotal = ship.getChildCount();
view = ship;
if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
ClipData data = ClipData.newPlainText("", "");
View.DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(view);
view.startDrag(data, shadowBuilder, view, 0);
view.setVisibility(View.INVISIBLE);
return true;
} else {
return false;
}
}
}
いくつか試しましたか?いくつかのコードを怒らせた? –
私は元の投稿に使用しているタッチリスナーを追加しました。私はLinearLayout内にドラッグ起源の左右にいくつのセルがあるのかを確認しようとしました。左側のsetTranslationX(cell.length()* - 1)と右側のsetTranslationX(cell.length())にそれぞれについて調べました。それは何も変わらなかった。 –