2012-10-06 79 views
3

我在MainActivity中實現onTouchListener,並將OnTouchListener歸於文本視圖tv,但是因爲按下屏幕時不會彈出消息彈出窗口。爲TextView實現onTouchListener

MainActivity

public class MainActivity extends Activity implements View.OnTouchListener 
{ 
    TextView tv;  
    @Override 
    public void onCreate(Bundle savedInstanceState){ 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     tv=(TextView)findViewById(R.id.tv); 
     tv.setOnTouchListener(this); 
     tv.setText(R.string.hello); 
    } 

    public boolean onTouch(View v,MotionEvent event) 
    { 
     Toast.makeText(this,"onTouch",Toast.LENGTH_LONG).show(); 
     return true; 
    } 
} 
+3

如果這很「容易」,爲什麼你打擾我們? :-) – paxdiablo

+0

你在模擬器或設備上運行它嗎? –

+0

謝謝,我在我的android墊上運行這個,我使用AIDE編譯器來執行它。當我觸摸屏幕時,它不會給出任何反饋。 – Yiyangchen

回答

0

,onTouchListener()有時僅接收一些用戶觸摸輸入。你可以使它成爲onClickListener()並查看行爲是否解決?

我編譯並運行了你的代碼,順便說一下,它工作正常。你可以有onTouch()打印Log.v()消息,並確保你的onTouch()被調用?

+0

謝謝,我試過Log.v(),但沒有打印任何消息,而當我嘗試onClickListener()時通過設置按鈕消息來了...我感覺很奇怪 – Yiyangchen

1

嘗試,如果同意

tv.setOnTouchListener(new CustomTouchListener()); 

public class CustomTouchListener implements View.OnTouchListener {  
    public boolean onTouch(View view, MotionEvent motionEvent) { 
    switch(motionEvent.getAction()){    
      case MotionEvent.ACTION_DOWN: 
       // Action you you want on finger down. 
    Toast.makeText(this,"onTouch",Toast.LENGTH_LONG).show(); 
       break;   
      case MotionEvent.ACTION_CANCEL:    
      case MotionEvent.ACTION_UP: 
       // Action you you want on finger up 
       break; 
    } 
     return false; 
    } 
} 
+0

謝謝,但剛纔我寫了一個Log .v()方法在onTouch()和設備似乎沒有注意到觸摸事件..謝謝任何方式... – Yiyangchen

0

這款N接受你必須@override onTouch方法,嘗試刪除工具onTouchListener並再次寫入其導入正確的,它不會工作,直到你寫

@Override 
public boolean onTouch(View v,MotionEvent event) 
{ 
    Toast.makeText(this,"onTouch",Toast.LENGTH_LONG).show(); 
    return true; 
} 
+1

謝謝,但我壓倒了方法,沒有任何改變... – Yiyangchen

0
TextView lastTV= (TextView) findViewById(R.id.lastTvValue); 

lastTV.setOnTouchListener(new View.OnTouchListener() { 

      @SuppressLint("ClickableViewAccessibility") 
      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
       // TODO Auto-generated method stub 
       if (event.getAction() == MotionEvent.ACTION_DOWN) { 
        //do stuff here 
        } 

       Log.i("click text", "kakak"); 
       return false; 
      } 
     }); 
相關問題