处理TextView以不同方式触摸/拖动事件

时间:2013-01-31 09:09:12

标签: android textview touch-event

我正在开发一个应用程序,我需要拖动文本视图,并在单击它时显示一个对话框。

我在下面添加了我的代码,当我只使用ACTION_MOVE时,我可以拖动文本。但是,当我将TextDialog.setVisibility(View.VISIBLE);设置为使我的对话框可见时,我无法拖动文本。这两个事件都没有同时发挥作用。

我该如何处理这两个事件?

tvText=  (TextView)findViewById(R.id.text);
    TextDialog=(LinearLayout)findViewById(R.id.Textdialog);
    tvText.setOnTouchListener(this);
    tvText.setOnClickListener(this);
}


@Override
public boolean onTouch(View v, MotionEvent event) {
    // TODO Auto-generated method stub
    layoutParams = (LayoutParams) tvText.getLayoutParams();
    switch(event.getAction())
    {
    case MotionEvent.ACTION_DOWN:  
                        TextDialog.setVisibility(View.VISIBLE);
                                    break;
    case MotionEvent.ACTION_MOVE:
                                    int x = (int)event.getRawX();
                                    int y= (int)event.getRawY();



                                    layoutParams.leftMargin = x - 150;
                                    layoutParams.topMargin = y - 210;


                                    tvText.setLayoutParams(layoutParams);
                                    break;

          default:
                                    break;
    }
          return true;



}

2 个答案:

答案 0 :(得分:0)

也实现OnClickListener。查看this

myView.setOnTouchListener(myListener);
myView.setOnClickListener(myListener);

/* MyListener class */
class MyListener implements View.OnTouchListerner, View.OnClickListener {
public void onTouch(View v, MotionEvent e) {
    if (e.ACTION_MOVE) {
        Log.d("ACTION MOVE",""); // now it is called
    } else if (e.ACTION_DOWN) {
        Log.d("ACTION_DOWN"); // called
    }
}

    public void onClick(View v) {
    }
}

答案 1 :(得分:0)

拖放任何小部件或布局并将其放入onTouch()

var PulseLoader = require('vue-spinner/src/PulseLoader.vue');