2013-07-28 9 views
7

In Android-Dokument erwähnt es die Unterstützung des "Hover" -Ereignis seit 4.0 (dh API-Ebene 14 und höher). Aber irgendwie funktioniert es nicht. Auch ich habe den Beispielcode in ApiDemo ausprobiert, der von Android Sample stammt, es hat nicht funktioniert. Mein aktuelles Gerät ist Android 4.0.4. Sollte ich es auf 4.2.2 upgraden?onHoverListener funktioniert nicht in Android

Beispielcode ist etwas wie unten. Hatten Sie eine Lösung? Danke vielmals.

Code:


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; 
     } 
    }); 

Antwort

9

Schweben erfordert Unterstützung von der Hardware. Das einzige, was es wahrscheinlich unterstützt, ist ein Stift. Es wird nicht nur mit dem Finger funktionieren.

+0

Danke. Wird es mit der Maus funktionieren? z.B. eine Bluetooth-Maus kompatibel mit Android-Gerät? –

+0

Nicht sicher, ich habe es noch nie ausprobiert. Ich denke es könnte (eine nicht angeklickte Maus als Hover macht Sinn), aber ich kann es nicht schwören. –

+0

Als ein Update zu diesem - einige Geräte werden jetzt in der Lage sein zu erkennen, ein einzelner Finger schwebt. Aber wirklich nur die höheren Endgeräte, wie die Note. Du kannst dich nicht darauf verlassen. –

0

Ich schlage vor, "Zugänglichkeit" und "Erforschen durch Berührung" -Funktion in den Einstellungen zu aktivieren. Wenn diese Funktionen deaktiviert sind, wird die Hover-Aktion als Berührungsaktion behandelt.

1

versuchen Sie mit OnFocusChangeListener(). PS arbeitete für mich