2011-08-24 65 views
0

任何人都可以帮助我如何在整个图像视图上拖放文本视图。我发现从这drag n drop textview in android这里文本视图是静态的,在我的应用程序textview和图像视图的动态更改。 `@覆盖 公共布尔的onTouchEvent(MotionEvent事件){拖放imageview上的textview?

switch (event.getAction()) { 
    case MotionEvent.ACTION_DOWN: 
     // Remember our initial down event location. 
     startX = event.getRawX(); 
     startY = event.getRawY(); 
     break; 
    case MotionEvent.ACTION_MOVE: 
     float x = event.getRawX(); 
     float y = event.getRawY(); 
     // Calculate move update. This will happen many times 
     // during the course of a single movement gesture. 
     scrollByX = x - startX; //move update x increment 
     scrollByY = y - startY; //move update y increment 
     startX = x; //reset initial values to latest 
     startY = y; 
     invalidate(); //force a redraw 
     break; 
     } 
    return true; //done with this event so consume it 
} 

我赖特这个代码,但它不能正常工作。

回答

2

您可以随时使用setText类型的方法以编程方式更改现有视图的图像和文本。

如果你谷歌它有很多拖放tutrials。强烈建议你尝试一下。 基本上你要做的是在TextView上实现一个OnTouchListener,就像

textview.setOntouchListener(listen);

OnTouchListener onThumbTouch = new OnTouchListener() 
    { 
     @Override 
     public boolean onTouch(View v, MotionEvent event) 
     { 
      switch(v.getId()) 
      { 
       case R.id.slider_thumb_id: 
       { 
        switch(event.getAction()) 
        { 
         case MotionEvent.ACTION_MOVE: 
         {       


         } 
         case MotionEvent.ACTION_UP: 
         {       

         } 
        } 
        break; 
       } 
      } 
      return true; 
     } 
    }; 

这里从事件属性你X和Y触摸事件和 使用的值改变的TextView的位置。我通过添加/减去边距值来实现。

编辑: 这是我做了什么来更新我的观点的立场 Look event.getRawY();会给你从父视图的距离。所以如果我得到event.getRawY()= 50.我知道我需要文本视图从顶部50像素。

LinearLayout.LayoutParams iconParams = (LinearLayout.LayoutParams) 
    v.getLayoutParams(); 
iconParams.topMargin = 50; 
v.setLayoutParams(iconParams); 

所以,现在我选择的视图是从父视图的顶部50 px。

+0

好的,如何移动整个图像上的文字。 –

+0

请给我发送该函数。@ blessenm –

+0

我用imageview.setMargin()。你不需要失效。 – blessenm