2012-03-18 5 views
4

私はプログラムで1つのビューをドラッグし、初期化の目的で別のビューの上にリリースしたいと考えています。Android - プログラムでドラッグアンドドロップを実行する

編集:私はあなたがレイアウトからビューを削除し、(それはあなたが探しているものの場合)他のレイアウトに追加することができ、ドラッグ&ドロップ

答えて

3

をシミュレートする方法を探しています

ViewGroup oldGroup = (ViewGroup) findViewById(R.id.some_layout); 
ViewGroup newGroup = (ViewGroup) findViewById(R.id.some_other_layout); 

Button button = (Button) oldGroup.findViewById(R.id.a_button); 

oldGroup.removeView(button); 
newGroup.addView(button); 

ドラグはありません&ドロップアニメーションとそれは奇妙な結果を与えるかもしれませんが、可能性があります。

ViewGroupは、LinearLayout,RelativeLayoutである。

public boolean onDrag(View v, DragEvent event); 

はあなただけnull

でそれを呼び出すことができますので、何のpublicコンストラクタを持っていない DragEventを期待:手動onDragListenerを呼び出すことができますが、1つの問題があるドラッグ&ドロップイベントをシミュレートするための


偽装パーセルを介して作成する方法があるかもしれませんが、それは醜いものになります。

private void initializationTest() { 
    DragEvent event = null; 
    /* maybe sth like that 
    Parcel source = Parcel.obtain(); 
    source.writeInt(1234); 
    event = DragEvent.CREATOR.createFromParcel(source); 
    */ 
    onDrag(theTargetView, event); 
} 

もう1つの可能性は、もしそれがうまくいくなら、toucheventsしかしIdkを作ることです。少なくともmonkeyはおそらくそれを行うことができます。

+0

zapl、彼はドラッグアンドドロップフレームワークについて質問しています。 –

+0

@imrankhanあなたはおそらく正しいでしょう – zapl

+1

ドラッグ・アンド・ドロップ・リスナーはすでにすべてをやる必要があるので、私は利便性の理由から2番目の答えを探していました。 。簡単/エレガントな解決策がないように思われるので別の方法でやり直さなければならないかもしれません – Schnodahipfe

関連する問題