2013-07-28 22 views
7

Nel documento di Android, si menziona il supporto dell'evento "hover" dalla 4.0 (ad esempio livello API 14 e successive). Ma in qualche modo, non funziona. Anche io ho provato il codice di esempio in ApiDemo, che è da Android Sample, non ha funzionato. Il mio dispositivo attuale è Android 4.0.4. Dovrei aggiornarlo alla 4.2.2?onHoverListener non funziona in Android

Il codice di esempio è qualcosa di seguito. Hai una soluzione? Molte grazie.

Codice:


View container = findViewById(R.id.container); 
    container.setOnHoverListener(new View.OnHoverListener() { 
     @Override 
     public boolean onHover(View v, MotionEvent event) { 
      switch (event.getAction()) { 
       case MotionEvent.ACTION_HOVER_ENTER: 
        mMessageTextView.setText(Hover.this.getResources().getString(
          R.string.hover_message_entered_at, 
          event.getX(), event.getY())); 
        break; 
       case MotionEvent.ACTION_HOVER_MOVE: 
        mMessageTextView.setText(Hover.this.getResources().getString(
          R.string.hover_message_moved_at, 
          event.getX(), event.getY())); 
        break; 
       case MotionEvent.ACTION_HOVER_EXIT: 
        mMessageTextView.setText(Hover.this.getResources().getString(
          R.string.hover_message_exited_at, 
          event.getX(), event.getY())); 
        break; 
      } 
      return false; 
     } 
    }); 

risposta

9

Librarsi richiede il supporto dall'hardware. L'unica cosa che probabilmente lo sosterrà è uno stilo. Non funzionerà con il tuo dito.

+0

Grazie. Funzionerà con il mouse? per esempio. un mouse bluetooth compatibile con il dispositivo Android? –

+0

Non sono sicuro, non l'ho mai provato. Penso che potrebbe (un topo non cliccato come un hover ha senso), ma non posso giurarlo che lo farà. –

+0

Come aggiornamento per questo- alcuni dispositivi saranno ora in grado di rilevare un passaggio del mouse con un dito. Ma in realtà solo i dispositivi di fascia più alta, come la nota. Non puoi fare affidamento su di esso. –

0

Suggerisco di attivare le funzioni "Accessibilità" e "Esplora al tocco" nelle impostazioni. Quando queste funzioni sono disattivate, l'azione di passaggio del mouse verrà trattata come azioni tocco.

1

provare a utilizzare OnFocusChangeListener(). PS ha funzionato per me