菜单未显示在操作栏上

时间:2018-04-26 10:31:54

标签: java android menu

我正在尝试为actvity创建一个菜单。但它不能像我一样出现在actionbar上。只是帮我错了。

这是我的菜单

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

<item
    android:id="@+id/search"
    android:icon="@drawable/ic_action_search"
    android:title="@string/menu_item_search"
    android:showAsAction="always"/>

<item 
    android:id="@+id/about"
    android:orderInCategory="1"
    android:title="@string/menu_item_about_app"/>

<item 
    android:id="@+id/help"
    android:orderInCategory="2"
    android:title="@string/menu_item_help"/>

这是我的活动

public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, 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
    // as you specify a parent activity in AndroidManifest.xml.
    switch(item.getItemId()){
        case R.id.search:
            Toast.makeText(this, "Search button selected", Toast.LENGTH_SHORT).show();
            break;
        case R.id.about:
            Toast.makeText(this, "About button selected", Toast.LENGTH_SHORT).show();
            break;
        case R.id.help:
            Toast.makeText(this, "Help button selected", Toast.LENGTH_SHORT).show();
            break;
    }
    return super.onOptionsItemSelected(item);
}}

这是结果

result

3 个答案:

答案 0 :(得分:0)

我的猜测是你正在使用styles.xml定义的默认工具栏,例如Theme.AppCompat.Light.DarkActionBar

我建议您使用文档here描述的支持操作栏。

提示:文档告诉您在应用清单中定义NoActionBar主题,但您也可以在styles.xml中设置它,以便您可以更好地控制使用此操作栏的位置。

答案 1 :(得分:0)

在Android 4.4之前,设备有一个硬件菜单按钮,因此使用硬件按钮激活动作溢出菜单,因此不会显示溢出图标。

您必须在4.4之前的设备中强行执行此操作以显示操作溢出按钮。在活动的onCreate()方法

中尝试以下代码
ViewConfiguration configure = ViewConfiguration.get(context);
Field menuField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey");
if (menuField != null) {
    menuField.setAccessible(true);
    menuField.setBoolean(config, false);
}

答案 2 :(得分:0)

您必须检查您的应用程序主题是否在其中没有操作。如果您共享主题或styles.xml将会很有帮助