2011-08-24 62 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