ActionBarSherlock: 如何访问主页按钮视图?

6

我正在使用ActionBarSherlock,并且希望实现一个类似于Google Maps中所知的主页按钮的功能。

像Google Maps中一样的主页按钮

我已经成功使用以下代码打开了一个QuickAction (http://code.google.com/p/simple-quickactions/) ,当按下主页按钮时,该快速操作将会被显示:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case android.R.id.home:
       View anchor = findViewById(R.id.text); // how do I get the home button view here?
       quickAction.show(anchor);
       return true;
    }
    return false;
}

然而,我正在使用活动的简单TextView作为锚点(R.id.text)。如何从ActionBar中检索home按钮视图?

哦,findViewById(android.R.id.home)findViewById(item.getItemId())都返回null。

1个回答

6
您无法访问主页视图,因为它位于内容视图和窗口装饰之上。
在Honeycomb之前的设备上,Google使用自定义操作栏,该栏位于内容视图内部。这就是允许他们创建此自定义下拉菜单的原因。在Honeycomb及更高版本中,他们在系统操作栏中使用高度定制的列表导航版本。
由于您正在使用ActionBarSherlock,因此有两个选择:
1. 采用更新的样式导航并自定义内置列表导航。 2. 提供一个模仿主页视图(例如,具有您的应用程序图标)的自定义导航视图。使用此自定义视图,您将能够提供可附加自定义弹出菜单的锚点。

谢谢,Jake,让这一点变得清晰明了。只有两个问题,看看我是否理解正确:
  1. 如果我选择选项1,我必须自定义ActionBarSherlock库中的列表导航,对吗?
  2. 选项2意味着我必须禁用主页按钮并添加自己的视图,对吗?
- Konsumierer
1
使用#1,您只需为适配器提供自定义布局(选定和下拉视图),用于列表导航。您可以查看ICS上的应用程序,例如Maps或Calendar应用程序,以了解其可自定义程度。对于#2,是的,您必须禁用普通主页项目,因为您的主页将完全替换它。 - Jake Wharton
2
你好 @JakeWharton,我们可以使用 findViewById(R.id.abs__home); 来获取主页图标吗?我的应用程序最小SDK版本是10。 - mrsus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接