【问题标题】:Android Studio - just can't get action bar / overflow to work?Android Studio - 只是无法让操作栏/溢出工作?
【发布时间】:2016-01-08 22:33:41
【问题描述】:

我使用的是 Android Studio(实际上是在 Mac 上),只使用真实设备

这只是 4.1+。所有项目都是从新创建的。

CHECK - 我确实加载了支持和 appcompat,尽我所能理解 Gradle。 [一]

CHECK - onCreateOptionsMenu 等,看起来不错...

CHECK - xml 很好用。 (我完全理解 showAsAction 选项,并尝试了所有选项。) [B] 关于使用文本或图标,我尝试了所有排列。

那么会发生什么?

当我在设备上运行它时(10+ 测试)。它只是显示尽可能多的操作栏项目(例如,5 个左右)。旋转等效果很好。

但它只是不会显示溢出图标!!怎么回事??它根本不会在任何地方显示缺少的三四个项目。

我已经用“空白活动”和“全屏活动”尝试了所有这些。无论我做什么,它都不会显示@#$@ 溢出。

这几乎就像图标在构建中不可用之类的??

有安卓朋友能解决这个问题吗?这真是一个“WTF”的时刻。提前致谢。

我的解决方法...https://stackoverflow.com/a/22855136/294884 效果很好,但你们 Android 人会嘲笑我这样做。

[A]:(请注意,我有两个 build.gradle 文件;我在 app/ 内的内部文件上完成了它。在外部文件上不起作用。)

[B]: (注意,一个常见的问题似乎是人们不明白“always”和“ifRoom”之间的区别。待定这根本不是我的问题:我的问题是@ $@# 溢出根本不会出现!!)


顺便说一句,Android 新手...

https://stackoverflow.com/a/16046189/294884

这种扩展讨论可能非常有用。

【问题讨论】:

  • 您是否只使用三星设备(或其他具有“菜单”硬件按钮的设备)?
  • 嗨 Budius .. 只是为了清楚,它也不会使物理菜单按钮工作。我将对没有物理菜单按钮的设备进行三次检查,然后回复您。
  • 那将是我最好的客人。带有硬件按钮的设备不显示 3 点菜单。顺便说一句:如果项目是 4.1+,你既不需要 support-v4 也不需要 appcompat-v7

标签: android android-actionbar


【解决方案1】:

按Android Studio左上角的“文件”,选择“项目结构...”。将打开一个对话框,左侧有一个模块列表。

选择你项目的模块,进入“Dependencies”选项卡,按右边绿色的“+”,在下一个Dialog中选择“Library Dependencies”就可以添加你想要的库了。

如果“Support v4”和“AppCompat”不可用,您应该首先通过 Android SDK Manager 安装“Android Support Library”和“Google Repository”。

【讨论】:

  • 绝对惊人的提示,非常感谢。然而,可悲的是,我的项目似乎已经有两个库:/
  • 最后,你的 Activity 必须扩展 android.support.v7.ActionBarActivity 而不是 android.app.Activity 并且必须使用 getSupportActionBar() 而不是 getActionBar()。
  • 我相信,如果你不使用片段,你可以扩展“Activity” .. 对吗?这似乎是这里的建议:developer.android.com/guide/topics/ui/actionbar.html BTW 是您的理解,正如 Budius 所说,如果设备确实有一个物理 KEYCODE_MENU 按钮,那么 android 将只使用该按钮不在顶部显示溢出图标?
  • :D 抱歉,可能是我误解了这个问题,因为我非常专注于支持库,而且我一直在开发具有向后兼容性的应用程序:D 顺便说一下,在解决方案中支持库 onCreate 中缺少以下代码: ActionBar actionBar = getSupportActionBar(); actionBar.setDisplayHomeAsUpEnabled(true); actionBar.setHomeButtonEnabled(true);
  • 回答您的问题“我相信,如果您不使用片段,您可以扩展“活动”......对吗?” - 为了使用向后兼容的 Fragments 而不是 Activity,您可以从 FragmentActivity 扩展,ActionBarActivity 扩展了带有 ActionBar 支持的 FragmentActivity 功能。
【解决方案2】:

那将是我最好的客人。带有硬件按钮的设备不显示三点菜单。

此外,如果项目是 4.1+,您既不需要 support-v4 也不需要 appcompat-v7。这些可能会引起一些冲突。

链接到不同设备上按钮的 Google 解释: http://developer.android.com/design/patterns/compatibility.html

关于使用 build.gradle 文件或对话框,嗯,可能是的,但我已经习惯了 gradle 文件,甚至从不看对话框,但我只是老派。


结果!

发现 Dirty Hack 强制溢出图标在具有硬件菜单按钮的设备上可见。

private void getOverflowMenu() {

     try {
        ViewConfiguration config = ViewConfiguration.get(this);
        Field menuKeyField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey");
        if(menuKeyField != null) {
            menuKeyField.setAccessible(true);
            menuKeyField.setBoolean(config, false);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

来源:http://www.tagwith.com/question_264107_overflow-menu-not-showed-at-action-bar

【讨论】:

  • 布迪乌斯当天惊人的通灵电话,谢谢。如果项目仅适用于 4.1+,它看起来像(在 Mac - Studio 上)(0.5.2,5/2014),看起来如果你添加这两个库,那么奇怪的溢出根本不起作用。 (意思是物理/图标都不起作用。它只是显示有多少可以适合 - 并放弃。)无论如何,我可能搞砸了别的东西;但希望它可以帮助某人。顺便说一句,这张照片左边的灰色污迹是一部 HTC 手机(HTC 的家伙,看起来很棒的手机,但是有一些该死的 LED 灯??)
【解决方案3】:

在开始使用 Android Studio 时,我在显示操作栏图标时遇到了类似的问题..

奇怪的是,当我查看设计屏幕中的布局时,它确实正确显示了图标,但是当我尝试在实际设备或模拟器上运行该应用程序时,它却显示了 3 个点。

我确实知道,即使在具有硬件设置按钮的设备上,我仍然会看到显示操作栏图标而不是 3 个点的应用程序。

最后,唯一有帮助的就是这样做: // 编译 'com.android.support:appcompat-v7:21.0.0'

我在解决问题的 gradle 中评论了这个库依赖项。

【讨论】:

    【解决方案4】:

    我有这样的东西,当我将我的项目移动到 android studio 时,如果所有操作栏项目都显示在操作栏上,它们只会在按下硬件按钮菜单时显示为文本,并且在 nexus 上运行时,三个点出现在操作栏的角落!

    我尝试了此页面上建议的内容,但未能成功显示操作栏上的项目!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-30
      • 2014-12-25
      • 1970-01-01
      相关资源
      最近更新 更多