在触摸动作事件android上移动文本

时间:2012-01-11 09:03:07

标签: android

我有文本在布局中查看并在布局中设置文本..现在我想在触摸事件上手写这个文本意味着取决于运动事件..所以如何移动这个文本和设置文本,我把手指放在哪里来自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 

3 个答案:

答案 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;
            }
        });