Android ActionBar菜单存在问题

时间:2015-01-30 19:39:22

标签: android android-actionbar

大家好,

我是Android新手,我尝试在我的Android应用程序中添加一个菜单:ActionBar

问题是我没有在操作栏上显示菜单,我没有图标就把它关闭了。

这是我的代码:

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


@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
     switch (item.getItemId())
     {
     case R.id.chat:
        // Single menu item is selected do something
        // Ex: launching new activity/screen or show alert message
         Toast.makeText(MainActivity.this, "Chat is Selected", Toast.LENGTH_SHORT).show();
         return true;


     default:
         return super.onOptionsItemSelected(item);
     }

}

这是xml文件:

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

以下是应用程序的屏幕截图,您可以看到菜单显示为DOWN且没有图标:

enter image description here

清单:

&#13;
&#13;
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.menu"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="21" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:1)

将菜单XML文件中的android:showAsActionandroid:showAsAction="ifRoom"更改为android:showAsAction="always"。这应该有用。

<强>更新

inflater.inflate(R.layout.menu, menu);更改为inflater.inflate(R.menu.main, menu);并使用菜单文件夹中的main.xml文件,而不是menu.xml文件夹中的layout文件。

更新2

由于您在评论中提到您使用的是appcompat库,因此您应修改main.xml文件夹中的menu文件,如下所示:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:compat="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools" >
<!-- Search, should appear as action button -->

<item android:id="@+id/chat"
      android:icon="@drawable/ic_action_chat"
      android:title="action_search"
      compat:showAsAction="always" />
<!-- Settings, should always be in the overflow -->

</menu>

答案 1 :(得分:0)

将您的menu移至菜单文件夹,并执行以下操作:

inflater.inflate(R.menu.menu, menu);