Android 工具栏菜单未显示

标签 android android-actionbar-compat

我正在尝试向工具栏添加一个菜单。 我的 ActivityonCreateOptionsMenu 方法被调用,但没有出现菜单。

这是dashboard.xml(来自菜单文件夹)

<?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"
      xmlns:tools="http://schemas.android.com/tools"
      tools:context="com.app.android.ui.dashboard.DashboardActivity">

    <item
        android:id="@+id/action_scan_qr"
        android:icon="@drawable/ic_drawer"
        android:title="@string/menu_scan_qr"
        app:showAsAction="always" />
</menu>

注意:此菜单的图标比操作栏的背景颜色深,因此应该可见。

Activity 中的充气菜单:

public class DashboardActivity extends ActionBarActivity {

@Override
public boolean onCreateOptionsMenu(final Menu menu) {
    getMenuInflater().inflate(R.menu.dashboard, menu);

    return true;
}

以及应用程序的主题:

<style name="Theme.Application.Base" parent="Theme.AppCompat.Light">
        <item name="colorPrimary">@android:color/white</item>
        <item name="colorPrimaryDark">@android:color/white</item>
        <item name="android:windowNoTitle">true</item>
        <item name="windowActionBar">false</item>
        <item name="drawerArrowStyle">@style/Theme.Application.DrawerArrowStyle</item>
        <item name="android:textColorSecondary">@android:color/darker_gray</item>
</style>

为什么调用 onCreateOptionsMenu 但菜单没有出现。我正在使用 appcompat-v7:21.0.3

编辑:

    @Override
    protected void onCreate(final Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(getContentViewId());

        toolbar = (Toolbar) findViewById(R.id.tool_bar);
        if (toolbar == null) {
            throw new Error("Can't find tool bar, did you forget to add it in Activity layout file?");
        }

        setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setHomeButtonEnabled(true);
    }

最佳答案

我也遇到了同样的问题,但实际的错误是,我忘了在 java Activity 中引入工具栏

AppCompactActivity 下,在 on create 方法下通过 id 定义您的工具栏并调用 setSupportActionBar(ToolBar);

示例如下:

public class secondActivity extends AppCompatActivity {
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);

        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        toolbar.showOverflowMenu();

关于Android 工具栏菜单未显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28317905/

相关文章:

php - Pushwoosh Phonegap 通知 PHP 方法设置标签

java - 删除Java ArrayList中的重复对象导致并发修改错误

android - 如何避免多个兼容性项目 appcompat_v7

使用 AppCompat 时,Android 的 splitActionBarWhenNarrow 在 Gingerbread 中不起作用

android - 构建apk后的错误

java - android隐藏内部RelativeLayout防止 Activity 出现

android - 适用于 iOS 和 Android 的 FCM 远程通知负载

android - ActionbarCompat 的 MultiChoiceAdapter NoSuchMethodException : startActionMode

android - 为什么在使用操作栏的支持库 API 时每个样式属性必须声明两次?

Android:Appcompat 21 如何在操作栏上添加阴影