#android #view #drag #sdk3.0
#Android #Вид #перетаскивание #sdk3.0
Вопрос:
Я хочу реализовать жест перетаскивания в представлении LinearLayout, и в нем содержатся некоторые компоненты, такие как TextView, button. Теперь я использую APL level 11,3.0 SDK для его разработки в соответствии с официальным документом Android. методы, включенные в мои коды, приведены ниже:
onLongClick() — запускает перемещение перетаскивания с помощью view.startDrag(clipdate, dragShadow, null, 0)
onDrag() — прослушиватель перетаскивания, используйте view.макет (слева, сверху, справа, снизу), обновите внешний вид компонента, который был перетащен
и проблема, с которой я сталкиваюсь, заключается в том, что другие компоненты исчезают, когда я перетаскиваю их в LinearLayou view, а когда я отбрасываю перетаскивание, оно исчезает вместе с другими.
итак, пожалуйста, кто-нибудь, кто может помочь мне рассказать, как все идет не так, или как я могу хорошо реализовать жест перетаскивания с вашим предложением. Во-первых, спасибо и ценю каждого, кто приходит сюда.
Ответ №1:
коды, которые я использовал, приведены ниже:
@Override
public boolean onLongClick(View view) {
// TODO Auto-generated method stub
boolean result = true;
if(DEBUG){
Log.d(TAG, "onLongClick ()");
}
mLongTouch = true;
ClipData.Item item = new ClipData.Item((CharSequence) view.getTag());
ClipData dragData = new ClipData((CharSequence) view.getTag(), mTabDragMimeData, item);
SimeTabDragListener.SimeTabDragShadow myShadow = new SimeTabDragListener.SimeTabDragShadow(view);
view.startDrag(dragData, myShadow, null, 0);
return resu<
}
@Override
public boolean onDrag(View view, DragEvent event) {
// TODO Auto-generated method stub
boolean result = true;
int action = event.getAction();
int eventX = (int)event.getX();
int eventY = (int)event.getY();
if(DEBUG){
Log.d(TAG, "onDrag()...event is " action ".... X cor is " event.getX() "...Y cor is" event.getY());
}
view.layout(eventX - mDownOffsetsX, eventY - mDownOffsetsY,
eventX mDownViewWidth - mDownOffsetsX, eventY mDownViewHeight - mDownOffsetsY);
view.postInvalidate();
return resu<
// вернуть super.onDragEvent (событие);
}
// drag shadows
public static class SimeTabDragShadow extends View.DragShadowBuilder {
private static Drawable shadow;
public SimeTabDragShadow(View view) {
super(view);
if(DEBUG amp;amp; view instanceof TextView)
Log.d(TAG, "drag view is text");
shadow = new ColorDrawable(Color.LTGRAY);
}
@Override
public void onProvideShadowMetrics(Point shadowSize,
Point shadowTouchPoint) {
// TODO Auto-generated method stub
super.onProvideShadowMetrics(shadowSize, shadowTouchPoint);
}
@Override
public void onDrawShadow(Canvas canvas) {
// TODO Auto-generated method stub
super.onDrawShadow(canvas);
}
}
и компоненты (TextView), содержащиеся в LinearLayout, являются статическими и загружаются с помощью XML, проблема в том, что другой TextView исчезнет при перетаскивании одного TextView и исчезнет с другими при его отбрасывании.
кто-нибудь знает, как это происходит, или как реализовать жест перетаскивания в LayoutView, спасибо и ценю, что ребята приходят сюда.