如何让 ActionBar 呈现?

How can I get the ActionBar to render?

我是 Android 开发的新手,我一直在试用 Android Studio。我已经关注 Google's tutorial,但我仍然无法在模拟器或真实设备上启动 ActionBar 和 运行。我在清单文件中指定了最低版本,我还相应地编辑了菜单和 activity xml 文件。

令人困惑的是,activity_foo.xml 和 menu_foo.xml 中显示的 UI 不同:

activity_foo.xml:

menu_foo.xml:

更令人困惑的是,最终的应用程序在构建时会在汉堡包菜单中同时显示“搜索”和“设置”,但我不记得在 GUI 预览中看到过它:

我该如何解决这个问题?

Confusingly, the UIs shown in the activity_foo.xml and menu_foo.xml are different

它们应该是不同的。一个是给你看一个布局文件。另一个是向您展示菜单资源。他们的预览不一定匹配。毕竟,一个比面包箱大的 Android 应用程序会有很多布局资源,其中很少会定义 activity.

的内容。

对于 定义 activity 内容的那些布局,IIRC,您可以在布局的根元素中具有相同的 tools:context=".FooActivity"文件,预览可能会考虑到这一点。

Even more confusingly, the final app when built shows both the Search and Settings in the hamburger menu though I do not recall seeing it in the GUI previews:

在预览中,搜索项由工具栏样式的按钮表示(图标是放大镜)。

在您的菜单资源中,您有一个 <item>android:showAsAction 和一个 <item>app:showAsAction。您要么正在使用 appcompat-v7 操作栏向后移植,要么没有。这将由以下因素决定:

  • 什么 Java class 你的 activity 继承自(ActionBarActivity or AppCompatActivity for appcompat-v7

  • 您在清单中为 activity 使用什么主题(如果它基于 Theme.AppCompat.*,您使用的是 appcompat-v7

如果您正在使用 appcompat-v7,您需要将 android:showAsAction 更改为 app:showAsAction。鉴于您在模拟器中 运行 项目的结果,我猜测您正在使用 appcompat-v7。如果您再次更改菜单资源和 运行 项目,您可能会看到搜索项显示为放大镜图标,如您在预览中所见。我说 "may" 是因为可能有也可能没有空间来显示工具栏样式的图标,这取决于 运行 是您的应用程序的屏幕尺寸和设备方向 — 带有 [=25= 的操作栏项目] 将在有空间时显示为工具栏样式按钮,否则将落入溢出菜单。