菜单项在溢出时既不显示也不在工具栏中显示

时间:2017-01-26 16:39:08

标签: android menuitem

我希望我的应用程序有一个工具栏,其中有两个图标,一个用于工具栏左侧的“设置”(单击“SettingsActivity”时),另一个用于右侧的用户个人资料。我使用下面的代码,但遗憾的是工具栏或溢出部分中没有显示任何图标。任何建议都表示赞赏。

MainActivity.java

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

        toolbar = UiUtils.findView(this, R.id.toolbar);
        setSupportActionBar(toolbar);

        getSupportActionBar().setDisplayShowHomeEnabled(true);
        getSupportActionBar().setDisplayUseLogoEnabled(true);

        // Remove application name from toolbar
        getSupportActionBar().setDisplayShowTitleEnabled(false);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu){
        getMenuInflater().inflate(R.menu.main_action_bar, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item){
        return super.onOptionsItemSelected(item);
    }
}

main_Action_bar.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
       xmlns:xmls="http://schemas.android.com/apk/res-auto"
       xmlns:app="http://schemas.android.com/tools"
>
<item
    android:id="@+id/action_settings"
    android:orderInCategory="100"
    app:showAsAction="always"
    android:title="Settings"
    android:visible="true"
    android:icon="@drawable/ic_settings_action_bar" />

<item
    android:id="@+id/action_profile"
    android:orderInCategory="101"
    app:showAsAction="always"
    android:title="Profile"
    android:icon="@drawable/ic_profile_action_bar" />
</menu>

styles.xml

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="windowNoTitle">true</item>
    <item name="windowActionBar">false</item>
</style

3 个答案:

答案 0 :(得分:1)

setHasOptionsMenu(true)添加到您的onCreate

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.main_Action_bar, menu);

    return true; 
}

答案 1 :(得分:1)

还应覆盖Activity的{​​{3}}:

protected boolean onCreateOptionsMenu(android.view.Menu) {
    getMenuInflater().inflate(R.menu.main_Action_bar, menu);
    return true;
}

要对菜单点击覆盖做出反应:onCreateOptionsMenu(android.view.Menu)

答案 2 :(得分:0)

经过一番调查后发现我应该编辑 menu_action_bar.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">
.
.
</menu