Android Studio 0.5.7不会在操作栏中显示按钮

时间:2014-05-07 13:00:25

标签: java android eclipse android-studio

我最近开始使用Android Studio而不是Eclipse的ADT插件。总的来说,我在Android Studio中遇到的问题非常少,而且过渡并不太困难。今晚,我在Android Studio中开始了一个新项目,并快速设置了主要活动的基本布局,并添加了一个包含三个项目的操作栏。编辑菜单xml文件时菜单的预览显示操作栏中的按钮,但是当我在我的Galaxy SII(运行android 4.2.2)或Genymotion模拟器(运行android 4.3)上启动应用程序时,按钮是总是强行进入溢出菜单。我在操作栏中禁用了应用程序标题,以确保按钮有足够的空间但仍然没有运气。

然后我在Eclipse中创建了一个项目,并将其复制到菜单的XML上。在我的手机和模拟器上,按钮显示在操作栏中而不是溢出菜单中。在这一点上,我无法看到为什么项目在两个不同的IDE中表现不同的原因。我将Eclipse项目导入到Android Studio中,令人惊讶的是,当我再次在手机和模拟器上启动应用程序时,按钮出现在操作栏中。

有没有其他人遇到过与此类似的问题?这是一个非常令人沮丧的几个小时的圈子,直到我设法在Android Studio中获得一个按照我的意愿工作的项目。

Android Studio 0.5.7中的以下步骤可以让您与我所做的相同。

  1. 创建一个新项目。
  2. 将最低API级别设置为11.
  3. 将目标API设置为19.
  4. 将所有其他设置保留为默认设置并创建项目。
  5. 在res / menu文件夹中创建一个文件调用test_menu.xml
  6. 将以下内容添加到文件中:

    <item android:id="@+id/testmeniitem"
      android:title="Test Menu Item"
      android:showAsAction="always"
      android:icon="@drawable/ic_launcher"
      />
    
  7. 预览应如下所示: Menu preview

    1. 在MainActivity.java中更新onCreateOptionsMenu,以便它为测试菜单充气。

      getMenuInflater()。inflate(R.menu.test_menu,menu);

    2. 在您选择的设备上运行项目。菜单项应该存在但仅在溢出菜单中。
    3. 如果需要更多信息,请通知我,我会更新问题。

1 个答案:

答案 0 :(得分:5)

尝试如下:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <item android:id="@+id/testmeniitem"
        android:title="Test Menu Item"
        android:showAsAction="always"
        app:showAsAction="always"
        android:icon="@drawable/ic_launcher"
        />

</menu>

您需要设置自定义命名空间并设置showAsAction两次。

我知道这很奇怪,但必须这样做,以确保showAsAction适用于所有API和所有兼容性库。

来自ActionBar buttons documentation page

  

如果您的应用使用支持库来兼容版本   与Android 2.1一样低,showAsAction属性不可用   来自android:名称空间。相反,此属性由。提供   支持库,您必须定义自己的XML命名空间并使用   该命名空间作为属性前缀。 (自定义XML命名空间应该   基于您的应用名称,但它可以是您想要的任何名称而且仅是   可在您声明它的文件范围内访问。)