onHoverListener doesn't work in Android

Josh ZHOU picture Josh ZHOU · Jul 28, 2013 · Viewed 18.7k times · Source

In android document, it mentions supporting the "hover" event since 4.0 (ie. API level 14 and up). But somehow, it doesn't work. Even I tried out the sample code in ApiDemo, which is from Android Sample, it didn't work. My current device is Android 4.0.4. Should I upgrade it to 4.2.2?

Sample code is something as below. Did you have a solution to it? Thanks a lot.

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

Answer

Gabe Sechan picture Gabe Sechan · Jul 28, 2013

Hovering requires support from the hardware. The only thing likely to support it is a stylus. It won't work with just your finger.