我正在开发一个应用程序,我需要拖动文本视图,并在单击它时显示一个对话框。
我在下面添加了我的代码,当我只使用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;
}
答案 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');