【发布时间】:2012-11-13 07:16:36
【问题描述】:
我有最简单的应用程序,我希望在这些应用程序中接收悬停事件,不幸的是,无论我尝试什么,我似乎都无法接收它们。我可以猜测其他地方正在接收它们并使用它们,但布局中只有两个视图,一个RelativeLayout 容器和一个TextView。将 RelativeLayout 更改为 LinearLayout 没有积极影响,在 TextView 实例上调用 setOnHoverListener 也没有。
我的应用程序面向 4.0.3 (API 15)。源代码与 SDK 源代码中提供的悬停示例几乎相同。它应该正常工作。过去我已经看到它起作用了。
如果有人能阐明我可能看不到的东西或对我能看到的东西有任何建议,我将不胜感激。
硬件:索尼 Xperia Sola
安卓版本:4.0.4
活动来源:
public class MainActivity extends Activity {
private TextView mMessageTextView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mMessageTextView = (TextView) findViewById(R.id.message);
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("Entered: " + event.getX() + ":" + event.getY());
break;
case MotionEvent.ACTION_HOVER_MOVE:
mMessageTextView.setText("Move: " + event.getX() + ":" + event.getY());
break;
case MotionEvent.ACTION_HOVER_EXIT:
mMessageTextView.setText("Exit: " + event.getX() + ":" + event.getY());
break;
}
return false;
}
});
}
}
【问题讨论】:
-
看看链接的例子,也许它对你有用:vogella.com/code/ApiDemos/src/com/example/android/apis/…
-
@JeremyD 容器肯定不为空,否则会抛出 npe。我今天早上做的是尝试另一部手机(我有两部 Xperia Sola)。上面的测试应用程序有效。不同之处在于,我正在处理的应用程序无法正常工作的那个是植根的。第二个索拉没有扎根。这是我所知道的两者之间的唯一区别。我仍然想知道为什么这在有根的 Xperia Sola 上不起作用。
-
@rosco 在这种特殊情况下没有帮助,因为它对测试和诊断目的过于复杂。
-
你能粘贴你的xml代码吗??
-
我正在尝试在 android 模拟器上做同样的事情,但从未调用过 onhover 事件?我尝试了 Android Samples 的 ApiDemos,但也没有触发此事件。