0
点赞
收藏
分享

微信扫一扫

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


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。


举报

相关推荐

0 条评论