2013-11-01 117 views
1

我想在动作栏按钮上触发两个不同的功能:一个用于“点击”,另一个用于“长按”。举个例子,它应该像汽车收音机一样工作。您可以在这里长时间存储无线电频道的频率,并在短时间内通话。Android:长按动作按钮

问题是,您没有在动作按钮上真正拥有自定义侦听器。 Google给出:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle presses on the action bar items 
    switch (item.getItemId()) { 
     case R.id.action_search: 
      openSearch(); 
      return true; 
     case R.id.action_compose: 
      composeMessage(); 
      return true; 
     default: 
      return super.onOptionsItemSelected(item); 
    } 
} 

是否有可能在长时间点击时调用监听器?

回答

1

你在找什么是OnLongClickListener。要知道它必须返回一个布尔型的含义,即它执行了LongClick或不。

你需要相同的按钮对象上添加了两个监听器:

button.setOnClickListener(new OnClickListener() { ... }); 
button.setOnLongClickListener(new OnLongClickListener() { ... }); 
+0

对不起,但不明白!就像上面显示的例子一样,MenuItens上没有监听器? –

+0

所以,你正在寻找一个OnLongClick()for ActionBar按钮?我相信ActionBar不应该具有更多的功能,这就是为什么你不能找到一个简单的解决方案。你为什么不尝试重构你的用户界面来做你想做的事? – Alxe

+0

正如@Alxe所说在操作栏上使用LongClick项目不是最佳解决方案。但是你可以为操作栏创建自定义视图并实现相同的功能! –

0

您可以创建操作栏自定义视图和执行自定义视图中onLongClick

+0

这应该是正确的做法!我采用了懒惰的解决方案,并在ActionBarMenu中实现了第一个(长按)功能来设置我的按钮并实现第二个功能(短按)来调用ActionBar中ActionButtons上的按钮。谢谢! –