【问题标题】:ActionBarSherlock: how to access home button view?ActionBarSherlock:如何访问主页按钮视图?
【发布时间】:2012-04-17 08:13:40
【问题描述】:

我正在使用 ActionBarSherlock,并且想要与 Google 地图所知道的主页按钮类似的功能。

当我用这段代码按下主页按钮时,我已经设法打开了一个 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 中检索主页按钮视图?

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

【问题讨论】:

    标签: android android-actionbar actionbarsherlock


    【解决方案1】:

    您无法访问主视图,因为它存在于内容视图之上和窗口装饰中。

    Google 在内容视图中存在的预 Honeycomb 设备上使用自定义操作栏。这就是允许他们制作此自定义下拉菜单的原因。在 Honeycomb 和更新版本上,他们在系统操作栏中使用高度自定义的列表导航版本。

    由于您使用的是 ActionBarSherlock,因此您有两个选择:

    1. 选择更新样式的导航并自定义内置列表导航。
    2. 提供一个模仿主视图的自定义导航视图(例如,其中包含您的应用程序图标)。使用此自定义视图,您将能够提供一个可以附加自定义弹出菜单的锚点。

    【讨论】:

    • 谢谢,杰克,说明这一点。再问两个问题,看看我是否理解正确: 1. 如果我选择选项 1,我必须在 ActionBarSherlock 库中自定义列表导航,对吗? 2.选项2意味着我必须禁用主页按钮并在那里添加我自己的视图?
    • 使用#1,您应该只需要为用于列表导航的适配器(选定视图和下拉视图)提供自定义布局。您可以查看 ICS 上的应用程序,例如地图或日历应用程序,了解其真正的可定制性。对于#2,是的,您必须禁用正常的家庭项目,因为您的家庭项目将完全取代它。
    • 你好@JakeWharton,我们可以使用findViewById(R.id.abs__home); 来获取主页图标吗?我的 Apps minSdk 是 10。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-19
    • 1970-01-01
    • 2020-09-05
    • 2020-09-30
    相关资源
    最近更新 更多