首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Android中将菜单设置为工具栏

如何在Android中将菜单设置为工具栏
EN

Stack Overflow用户
提问于 2016-02-26 18:12:49
回答 16查看 199.6K关注 0票数 123

我想使用ToolBar而不是ActionBar,但不在工具栏中显示菜单!我想要设置菜单,如刷新ActionBar中的Setting按钮。

Toolbar.xml代码:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="?attr/colorPrimary"
    android:minHeight="?attr/actionBarSize"
    app:navigationContentDescription="@string/abc_action_bar_up_description"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
    app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    app:title="Main Page"
    android:gravity="center"/>

MainPage.java代码:

代码语言:javascript
复制
public class MainPage extends AppCompatActivity {
    private Toolbar toolbar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_page);

        toolbar = (Toolbar) findViewById(R.id.main_toolbar);
        setSupportActionBar(toolbar);
        if (getSupportActionBar() != null) {
            getSupportActionBar().setTitle("Main Page");
        }
        toolbar.setSubtitle("Test Subtitle");
        toolbar.inflateMenu(R.menu.main_manu);
    }
}

main_menu.xml代码:

代码语言:javascript
复制
<?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/menu_main_setting"
        android:icon="@drawable/ic_settings"
        android:orderInCategory="100"
        app:showAsAction="always"
        android:actionLayout="@layout/toolbar"
        android:title="Setting" />

    <item
        android:id="@+id/menu_main_setting2"
        android:icon="@drawable/ic_settings"
        android:orderInCategory="200"
        app:showAsAction="always"
        android:actionLayout="@layout/toolbar"
        android:title="Setting" />

</menu>

如何解决这个问题并在Toolbar中显示菜单?感谢所有亲爱的<3

EN

回答 16

Stack Overflow用户

回答已采纳

发布于 2016-02-26 18:16:47

只需在MainPage.java中像这样覆盖onCreateOptionsMenu

代码语言:javascript
复制
@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, menu);
    return true;
}
票数 177
EN

Stack Overflow用户

发布于 2018-05-08 12:00:21

这里有一个更完整的答案,供未来的访问者参考。我通常使用support toolbar,但无论哪种方式,它都能正常工作。

1.制作一个菜单xml

这将会出现在res/menu/main_menu中。

  • 右键单击“res”文件夹,然后选择“新建”>“Android
  • res main_menu”作为文件名。
  • 选择“Menu”作为资源类型。

粘贴以下内容作为入门内容。

代码语言:javascript
复制
<?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/action_add"
        android:icon="@drawable/ic_add"
        app:showAsAction="ifRoom"
        android:title="Add">
    </item>
    <item
        android:id="@+id/action_settings"
        app:showAsAction="never"
        android:title="Settings">
    </item>
</menu>

您可以右键单击res并选择新建图像资源来创建ic_add图标。

2.放大菜单

在您的活动中添加以下方法。

代码语言:javascript
复制
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main_menu, menu);
    return true;
}

3.处理菜单点击

另外,在您的活动中,添加以下方法:

代码语言:javascript
复制
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle item selection
    switch (item.getItemId()) {
        case R.id.action_add:
            addSomething();
            return true;
        case R.id.action_settings:
            startSettings();
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}

进一步阅读

票数 67
EN

Stack Overflow用户

发布于 2016-02-26 18:26:59

您需要在您的活动中覆盖此代码:

代码语言:javascript
复制
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu, this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main2, menu);
    return true;
}

然后像这样设置工具栏:

代码语言:javascript
复制
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
票数 48
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35648913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档