首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将TextView的文本拖放到TextView

将TextView的文本拖放到TextView
EN

Stack Overflow用户
提问于 2014-12-29 20:00:47
回答 1查看 999关注 0票数 4

我试图使一个具有拖放功能的应用程序,但我不能拖动文本从文本视图到文本视图,但从文本视图编辑文本是可能的与此代码。

代码语言:javascript
复制
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public class MainActivity extends Activity implements OnLongClickListener {

private TextView textView;
private TextView textView1;

@Override
protected void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    textView = (TextView) findViewById(R.id.textView);

    myDragEventListener mDragListen = new myDragEventListener();

    textView.setTag("Example");

    textView.setOnLongClickListener(this);

    textView1 = (TextView)findViewById(R.id.textView1);

    textView1.setOnDragListener(mDragListen);
}


protected class myDragEventListener implements View.OnDragListener
{

    @Override
    public boolean onDrag(View v, DragEvent event) 
    {
        final int action = event.getAction();

        switch(action) 
        {

        case DragEvent.ACTION_DRAG_STARTED:

            if (event.getClipDescription().hasMimeType(ClipDescription.MIMETYPE_TEXT_PLAIN)) 
            {

                return true;
            }

            // Returns false. During the current drag and drop operation, this View will
            // not receive events again until ACTION_DRAG_ENDED is sent.
            return false;

        case DragEvent.ACTION_DRAG_ENTERED:


            return true;

        case DragEvent.ACTION_DRAG_LOCATION:

            // Ignore the event
            return true;

        case DragEvent.ACTION_DRAG_EXITED:


            return true;

        case DragEvent.ACTION_DROP:

            if(v == findViewById(R.id.textView1)) 
            {
                TextView view = (TextView) event.getLocalState();
                textView1.setText(view.getText().toString());
            } 
            else
            {
                View view = (View) event.getLocalState();
                view.setVisibility(View.VISIBLE);
                Toast.makeText(MainActivity.this, "You can't drop the image here", Toast.LENGTH_LONG).show();
                break;
            }
            break;

        case DragEvent.ACTION_DRAG_ENDED:

            v.invalidate();

            // Does a getResult(), and displays what happened.
            if (event.getResult())
            {
                Toast.makeText(MainActivity.this, "The drop was handled.", Toast.LENGTH_LONG).show();
            }
            else 
            {

            }

            // returns true; the value is ignored.
            return true;

            // An unknown action type was received.
        default:
            Log.e("DragDrop Example","Unknown action type received by OnDragListener.");
            break;
        }

        return false;
    }
}


@Override
public boolean onLongClick(View view)
{
    TextView textView = (TextView) view;
    ClipData.Item item = new ClipData.Item(textView.getText().toString());
    String[] mimeTypes = { ClipDescription.MIMETYPE_TEXT_PLAIN };
    ClipData data = new ClipData("", mimeTypes, item);
    DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(view);

    view.startDrag( data,
            shadowBuilder,//data to be dragged
            view, //local data about the drag and drop operation
            0   //no needed flags
            );

    return true;
};
}

我的错误在哪里?

EN

回答 1

Stack Overflow用户

发布于 2015-12-21 20:07:13

使用onTouchListener()而不是longClickListener()。如果它不起作用,请告诉我

代码语言:javascript
复制
textView.setOnTouchListener(new View.OnTouchListener() {

            @Override
            public boolean onTouch(View v, MotionEvent arg1) {
                // TODO Auto-generated method stub
                ClipData data = ClipData.newPlainText("datalabel", "text");
                View.DragShadowBuilder shadow = new View.DragShadowBuilder(drag);
                v.startDrag(data, shadow, null, 0);
                return false;
            }
        });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27688476

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档