向操作栏添加操作 Android

Adding Action to the Action Bar Android

我正在尝试向操作栏添加搜索图标,它显示在 Android Studio 的 xml 预览中,但是当我 运行 我的应用程序时它显示在溢出菜单中向上而不是操作栏上的图标。我做错了什么?

menu_launch.xml:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".LaunchActivity">

<item android:id="@+id/action_search"
    android:icon="@drawable/ic_action_search"
    android:title="@string/action_search"
    app:showAsAction="ifRoom"/>

<item android:id="@+id/action_settings"
    android:title="@string/action_settings"
    android:orderInCategory="100"
    app:showAsAction="never"/>

我尝试将 app:showAsAction 设置为 "always",但没有成功。

在我的 LaunchActivity.java:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.menu_launch, menu);
    return super.onCreateOptionsMenu(menu);
}

我的 LaunchActivity.java 扩展了 Activity,不是 ActionBarActivity,我不知道这是否与它有关。

感谢您的帮助,这是我的第一个应用程序。

让您的 Activity 扩展 ActionBarActivity。您拥有的 menu_launch.xml 会起作用。

尝试更改主题。这也取决于你的主题。 在 styles.xml 文件中

     <style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">

让我知道这是否有效,因为其他所有内容似乎都在您的代码中有效。您还需要将此引用放入 manifest.xml 文件。 对于您的主要 activity

<application
android:theme="@style/AppTheme" />

根据文档..

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
 <!-- Search, should appear as action button -->
<item android:id="@+id/action_search"
      android:icon="@drawable/ic_action_search"
      android:title="@string/action_search"
      android:showAsAction="ifRoom" />
<!-- Settings, should always be in the overflow -->
<item android:id="@+id/action_settings"
      android:title="@string/action_settings"
      android:showAsAction="never" />
</menu>

这声明当操作栏中有可用空间时,搜索操作应显示为操作按钮,但设置操作应始终显示在溢出中。 (默认情况下,所有操作都会出现在溢出中,但最好明确声明每个操作的设计意图。

因此,请尝试旋转您的屏幕,只要有足够的空间让图标适合,您的应用程序就会显示它。 你应该设置 showAsAction="always".

Why you are sitting app:showAsAction="never" in action_settings try this

 <menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".LaunchActivity">

      <item android:id="@+id/action_search"
       android:icon="@drawable/ic_action_search"
       android:title="@string/action_search"
       app:showAsAction="ifRoom"/>

       <item android:id="@+id/action_settings"
        android:title="@string/action_settings"
        android:orderInCategory="100"
        app:showAsAction="ifRoom"/>
  </menu>

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".LaunchActivity">

     <item android:id="@+id/action_settings"
        android:title="@string/action_settings"
        android:orderInCategory="100"
        app:showAsAction="never"/>

      <item android:id="@+id/action_search"
       android:icon="@drawable/ic_action_search"
       android:title="@string/action_search"
       app:showAsAction="ifRoom"/>


 </menu>

对于 ActionBarActivity,您将使用 app:showAsAction,因为它将是 AppCompat 属性。

对于 Activity,您应该使用 android:showAsAction,因为这是它读取的唯一 属性。

如果您希望它始终显示为图标,请将 属性 设置为 "always"

android:showAsAction="never"

android:showAsAction="ifRoom"

这些都是问题,改成

android:showAsAction="always"

尝试将 app:showAsAction 更改为 android:showAsAction