onHoverListener在Android中不起作用

时间:2013-07-28 14:56:48

标签: android onhover

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

4 个答案:

答案 0 :(得分:9)

悬停需要硬件支持。唯一可能支持它的是手写笔。它不会只用你的手指。

答案 1 :(得分:1)

尝试使用OnFocusChangeListener()。 PS为我工作

答案 2 :(得分:0)

我建议在设置中启用“辅助功能”和“触摸浏览”功能。 关闭这些功能后,悬停操作将被视为触摸操作。

答案 3 :(得分:0)

setOnTouchListener 也是一个选项。这是一个 kotlin 示例:

    binding.ratingBar.setOnTouchListener { v, event ->
        println("touch......")
        false
    }

这里 (binding.ratingBar) 是我的视图参考。我使用了视图绑定。