问题
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;
}
});
回答1:
Hovering requires support from the hardware. The only thing likely to support it is a stylus. It won't work with just your finger.
回答2:
try using OnFocusChangeListener()
.
PS worked for me
回答3:
I suggest to Turn on 'Accessibility' and 'Explore by touch' feature in settings. When these features are off, the hover action will be treated as touch actions.
来源:https://stackoverflow.com/questions/17909495/onhoverlistener-doesnt-work-in-android