9

在 android 文档中,它提到从 4.0 开始支持“悬停”事件(即 API 级别 14 及更高版本)。但不知何故,它不起作用。即使我尝试了来自 Android Sample 的 ApiDemo 中的示例代码,它也不起作用。我目前的设备是 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

4 回答 4

10

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

于 2013-07-28T15:00:47.660 回答
1

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

于 2016-03-08T11:53:43.970 回答
0

我建议在设置中打开“辅助功能”和“触摸浏览”功能。当这些功能关闭时,悬停动作将被视为触摸动作。

于 2013-10-08T05:41:49.517 回答
0

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

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

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

于 2021-07-25T09:21:48.743 回答