在Android中的手指触摸上绘制编辑视图/ textview

时间:2012-09-16 16:47:40

标签: android

我是Android的新手,在我的应用程序中,我需要在手指触摸上绘制textview / editview,用户可以在其中键入。我搜索了很多但没有找到任何相关内容。

我找到了绘制editview / text但不在fingertouch上的链接。

1 个答案:

答案 0 :(得分:1)

您可以通过在视图上注册触摸事件来完成此操作。触摸事件触发后,您可以根据触摸事件坐标创建EditText / TextView。

class YourMainClass extends Activity{

  public void onCreate(Bundle bundle)
  {
     //Do your normal UI initialization here
     your_layout.setOnTouchListener(new TouchListener()); //where your_layout is the layout/view of your Activity that should register the touch events.
  }

  class TouchListener implements OnTouchListener
  {
     @Override
     public boolean onTouch(View v, MotionEvent event) {
         if(event.getAction() == MotionEvent.ACTION_UP) {
           RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,RelativeLayout.LayoutParams.WRAP_CONTENT); //See note below
           params.leftMargin = (int)event.getX() - v.getLeft();
           params.topMargin = (int)event.getY() - v.getTop();
           EditText edit = new EditText(this);
           edit.setLayoutParams(params);
           your_layout.addView(edit);
           return true;
         }
     }
  }
}

注意:请务必将LayoutParams类型更改为您使用的布局类型(例如:LinearLayout.LayoutParams如果您使用LinearLayout将EditText放入其中)。

此外,如果使用填充,实际EditText的坐标可能会关闭(因为在使用v.getLeft()v.getTop()时,填充区域仍被视为视图,但在将EditText添加到你的布局)。