3

独自のドラッグ アンド ドロップ機能を作成しました。

でこれをやりたかったのですRelativeLayoutが、うまくいかないようです。View最初に、前の下に設定することで、どの位置にドラッグするかをそれぞれに伝えることができますView

しかし、ビューをドラッグすると、その下にある他のすべてのビューも移動されます。これは、設定した順序を維持したいためです。

しかし、これには他にどのようなレイアウトを使用できますか? このドラッグ アンド ドロップ機能をさまざまな画面サイズで使用する必要があるため、固定値xy値を指定できません。

4

1 に答える 1

8

しばらく前に同じ問題に直面しました。ドラッグされているビューと一緒に他のビュー(ビューの下または上または横)をドラッグしたくない場合は、ViewGroup.LayoutParams代わりにを使用RelativeLayout.LayoutParamsします。Ctrl-Shiftを押すと後者がインポートされます。 -Oなので、手動で前者に変更してください。

編集:あなたは私がそれをどのように達成したかについての説明が必要だったので、ここに実際のコードがあります

 MarginLayoutParams marginParams = new MarginLayoutParams(image.getLayoutParams());              
 int left = (int) event.getRawX() - (v.getWidth() / 2);
 int top = (int) event.getRawY() - (v.getHeight());
 marginParams.setMargins(left, top, 0, 0);
 RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(marginParams);
 image.setLayoutParams(layoutParams);  

同じことを達成するために多くの調査をしなければならず、MarginLayoutParamsと呼ばれるものが存在することを理解するのに2日かかりました...

あなたが持っていることを確認してください

import android.view.ViewGroup.LayoutParams;
import android.view.ViewGroup.MarginLayoutParams;

あなたの輸入品としてではなくRelativeLayout.LayoutParams

また、marginparamsを相対レイアウトにキャストするようにしてください。幸運を祈ります...

于 2012-04-09T15:00:05.150 に答える