如何让ActionBar渲染?

时间:2015-05-31 14:50:42

标签: android xml rendering

我是Android开发的新手,我一直在为Android Studio提供支持。我跟着Google's tutorial,我仍然无法在模拟器或真实设备上启动并运行ActionBar。我在清单文件中指定了最小版本,并且我也相应地编辑了菜单和活动xml文件。

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

activity_foo.xml: enter image description here

menu_foo.xml: enter image description here

更令人困惑的是,构建的最终应用程序在汉堡包菜单中显示了搜索和设置,但我不记得在GUI预览中看到它: enter image description here

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

  

令人困惑的是,activity_foo.xml和menu_foo.xml中显示的用户界面不同

他们应该是不同的。一个是向您显示布局文件。另一个是向您显示菜单资源。他们的预览不一定匹配。毕竟,比面包箱大的Android应用程序将拥有许多布局资源,其中很少会定义活动的内容。

对于定义活动内容的那些布局,IIRC,您可以在布局文件的根元素中使用相同的tools:context=".FooActivity",并且预览可以将其转换为帐户。

  

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

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

在您的菜单资源中,您有一个<item> android:showAsAction和一个<item> app:showAsAction。要么使用appcompat-v7操作栏后退,要么不是。这将取决于:

  • 您的活动从哪个Java类继承(ActionBarActivityAppCompatActivity appcompat-v7

  • 您在清单中为活动使用的主题(如果它基于Theme.AppCompat.*,您正在使用appcompat-v7

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