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

waf*_*irt 2 java eclipse android 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"
      />
    
    Run Code Online (Sandbox Code Playgroud)

预览应如下所示: 菜单预览

  1. 在MainActivity.java中更新onCreateOptionsMenu,以便它使测试菜单膨胀.

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

  2. 在您选择的设备上运行该项目.菜单项应该存在但仅在溢出菜单中.

如果需要更多信息,请通知我,我将更新问题.

shk*_*der 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>
Run Code Online (Sandbox Code Playgroud)

您需要放置一个自定义命名空间并设置showAsAction两次.

我知道这很奇怪,但必须这样做以确保showAsAction所有API和所有兼容性库的工作.

ActionBar按钮文档页面:

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