我有文本在布局中查看并在布局中设置文本..现在我想在触摸事件上手写这个文本意味着取决于运动事件..所以如何移动这个文本和设置文本,我把手指放在哪里来自screen ...我在谷歌搜索并发现,可以使用,event.getX()和y = + event.getY()得到x和y的屏幕坐标但是如何使用它来设置该位置的文本只有..
TextView textView = (TextView)findViewById(R.id.textView);
// this is the view on which you will listen for touch events
View touchView = findViewById(R.id.touchView);
touchView.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
}}
}
thanks
答案 0 :(得分:3)
你的问题不清楚你在触摸时移动文字是什么意思?你想移动手指接触的文字吗?如果你想要这个,那么在活动中制作两个变量x和y并用这样更新它们。
x = event.getX() // or getRawX();
y = event.getY();
答案 1 :(得分:0)
根据您使用的布局,它应如下所示:
FrameLayout.LayoutParams lLayoutParam = (FrameLayout.LayoutParams) your_view.getLayoutParams();
lLayoutParam.leftMargin = x;
lLayoutParam.topMargin = y;
your_FrameLayout.updateViewLayout(your_view, lLayoutParam);
我不是Android UI的专家,但据我所知,FrameLayout似乎适合用绝对值控制位置。
答案 2 :(得分:0)
使用以下代码在布局内移动手指移动文本。
write_text.setOnTouchListener(new OnTouchListener() {
@SuppressLint("NewApi")
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
break;
case MotionEvent.ACTION_MOVE:
v.setX(event.getRawX() - write_text.getWidth() / 2.0f);
v.setY(event.getRawY() - write_text.getHeight() / 2.0f);
}
return true;
}
});