0

我的代码在这里做什么只是将文本视图从粉红色区域拖放到黄色区域

问题是当我在屏幕底部拖动​​ textView 时 textview 将不可见

如果你没有得到我的问题,请在评论中问我

我试图搜索很多但没有得到任何指示

这是屏幕截图和代码

在此处输入图像描述

这是主要的活动课

package com.javapapers.android.drag_drop;

import android.os.Bundle;
import android.app.Activity;
import android.view.*;
import android.view.View.OnDragListener;
import android.view.View.OnTouchListener;
import android.view.View.DragShadowBuilder;
import android.widget.LinearLayout;
import android.util.Log;
import com.javapapers.android.drag_drop.R;


public class MainActivity extends Activity implements OnTouchListener,OnDragListener{
    private static final String LOGCAT = null;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        findViewById(R.id.textView1).setOnTouchListener(this);
        findViewById(R.id.pinkLayout).setOnDragListener(this);
        findViewById(R.id.yellowLayout).setOnDragListener(this);
    }
    public boolean onTouch(View view, MotionEvent motionEvent) { 
            if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
              DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(view);
              view.startDrag(null, shadowBuilder, view, 0);
              view.setVisibility(View.INVISIBLE);
              return true;
            }
            else {
                return false;
            }

    }  
    public boolean onDrag(View layoutview, DragEvent dragevent) {
          int action = dragevent.getAction();
          switch (action) {
          case DragEvent.ACTION_DRAG_STARTED:
              Log.d(LOGCAT, "Drag event started");
            break;
          case DragEvent.ACTION_DRAG_ENTERED:
              Log.d(LOGCAT, "Drag event entered into "+layoutview.toString());
            break;
          case DragEvent.ACTION_DRAG_EXITED:
              Log.d(LOGCAT, "Drag event exited from "+layoutview.toString());
            break;
          case DragEvent.ACTION_DROP:
            Log.d(LOGCAT, "Dropped");
            View view = (View) dragevent.getLocalState();
            ViewGroup owner = (ViewGroup) view.getParent();
            owner.removeView(view);
            LinearLayout container = (LinearLayout) layoutview;
            container.addView(view);
            view.setVisibility(View.VISIBLE);
            break;
          case DragEvent.ACTION_DRAG_ENDED:
                  Log.d(LOGCAT, "Drag ended");
              break;
          default:
            break;
          }
          return true;
    }
}

这是activity_main xml

<RelativeLayout xmlns:tools="http://schemas.android.com/tools"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/center"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <LinearLayout
        android:id="@+id/pinkLayout"
        android:layout_width="fill_parent"
        android:layout_height="210dp"
        android:background="#FF8989"
        android:orientation="vertical" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/dragtext"
        android:textSize="70sp" />

    </LinearLayout>

    <LinearLayout
        android:id="@+id/yellowLayout"
        android:layout_width="fill_parent"
        android:layout_height="250dp"
        android:layout_alignParentBottom="true"
        android:layout_below="@+id/pinkLayout"
        android:background="#FFCC00"
        android:orientation="vertical" >

    </LinearLayout>

</RelativeLayout>

谢谢你

4

1 回答 1

1

这是因为没有击中丢弃的案例,而是退出和结束的案例,因此视图的可见性永远不会再次设置为可见

于 2013-07-19T00:54:32.537 回答