【发布时间】:2011-04-04 04:34:51
【问题描述】:
我目前正在与 Android Api Lvl 8 上的 OnLongClickListener 作斗争。
获取此代码:
this.webView.setOnLongClickListener(new OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
System.out.println("long click");
return true;
}
});
完美运行。我可以按 WebView 上的任意位置,每次都会触发事件。
现在看看这个:
this.webView.setOnLongClickListener(new OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
final EditText editText = getUrlTextField();
switch (editText.getVisibility()) {
case View.VISIBLE:
editText.setVisibility(View.GONE);
return true;
case View.GONE:
editText.setVisibility(View.VISIBLE);
return true;
default:
return false;
}
}
});
假设 URL EditText 组件当前是可见的,它会从显示中消失,并且应该在触发另一个长单击事件时再次显示。 但是如果你运行这个,当一个人长按 WebView 上的任何位置时,该事件只会工作一次(!)。更复杂的是,当在网站上的链接上执行长点击时,它会再次起作用...
谁能解释这是否是 sdk 中的错误和/或我认为 OnLongClickListener 的工作方式是否存在错误?!? :/
编辑:
我现在已经在 Nexus One 上运行了几个不同的场景并得出以下结论:在运行时更改布局或多或少会杀死 OnLongClickListener...我还没有找到一种方法让它可靠地工作。 ..
如果有人能给我一个提示,我将不胜感激......我无能为力:(
【问题讨论】:
标签: android click listener behavior long-click