在android文档中,它提到支持自4.0以来的“悬停”事件(即API级别14及以上)。但不知何故,它不起作用。即使我在ApiDemo中试用了示例代码,它来自Android Sample,但它没有用。 我目前的设备是Android 4.0.4。我应该将其升级到4.2.2吗?
示例代码如下所示。 你有解决方案吗?非常感谢。
代码:
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;
}
});
答案 0 :(得分:9)
悬停需要硬件支持。唯一可能支持它的是手写笔。它不会只用你的手指。
答案 1 :(得分:1)
尝试使用OnFocusChangeListener()
。
PS为我工作
答案 2 :(得分:0)
我建议在设置中启用“辅助功能”和“触摸浏览”功能。 关闭这些功能后,悬停操作将被视为触摸操作。
答案 3 :(得分:0)
setOnTouchListener 也是一个选项。这是一个 kotlin 示例:
binding.ratingBar.setOnTouchListener { v, event ->
println("touch......")
false
}
这里 (binding.ratingBar) 是我的视图参考。我使用了视图绑定。