您的位置:首页 > 移动开发 > Android开发

Android 系列 6.15处理长时间点击事件

2017-01-11 09:22 513 查看
6.15处理长时间点击事件

问题

您想要监听长时间点击的事件并对其做出反应,而无需手动检查多个事件。



使用View类的setLongClickable()和setOnLongClickListener()方法,并提供一个OnLongClickListener。

讨论

View类有一个方法setLongClickable(boolean)来启用/禁用长按支持,并对应

setOnLongClickListener(OnLongClickListener)方法。在示例6-23中,我们监听一个视图的长时间点击,并通过弹出一个PopupMenu来响应,这将是模态的,并将出现在ListView的前面。

实例6-23。一个LongClickListener
final View myView = findViewById(R.id.myView);
...
myView.setOnLongClickListener(new OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
PopupMenu p = new PopupMenu(Main.this, view);
p.getMenuInflater().inflate(
R.layout.main_popup_menu, p.getMenu());
p.show();
return true;
}
});


当您单击其中一个项目时,将忽略弹出式菜单;菜单项列表来自XML文件res / menu / main_popup_menu.xml,它只包含一系列带有菜单项文本的项目元素。

注意,调用setOnLongClickListener()具有调用setLongClickEnabled(true)的副作用。

注意,添加一个onClickListener到ListView(或其他多项目视图)不工作,你可能期望;列表项只是按正常点击被分派。相反,您必须使用setOnItemLongClickListener方法,它不必要地采用OnItemLongClickListener()实例,当您长按列表中的项目时,将调用该实例。

事实上,你甚至可以通过预填充菜单并将其传递到Activity的setContextMenu(view,menu)方法来简化ListView。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息