工具栏不显示溢出图标

时间:2015-10-27 11:20:17

标签: android android-toolbar

我的应用有minSDKVersio=11targetSDKVersion=22。我在运行API14的GalaxyNexus仿真器上运行应用程序。

我的活动在布局中有一个工具栏。工具栏是从android.support.v7.widget.Toolbar库中导入的。

以下是填充工具栏的菜单资源的内容。文件名是homeview_menu_common.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">
<item
    android:id="@+id/action_favorite"
    android:title="XXX"
    app:showAsAction="always"/>

<item 
    android:id="@+id/homeview_toolbar_overflow_logout"
    android:title="@string/homeview_toolbar_overflow_logout"
    app:showAsAction="always">
</item>
</menu>

我的问题是:根本不显示溢出菜单。由于GalaxyNexus没有硬件选项按钮,因此溢出菜单应该在Toolber中可见。我还发现永远不会调用onCreatOptionsMenu(Menu menu)

更新:发布活动代码

public class HomeView extends GenericActivity<HomeOps.View, HomeOps> implements HomeOps.View {

@Override
protected void onCreate(Bundle savedInstanceState) {
    //super.onCreate(savedInstanceState);
    setContentView(R.layout.homeview_layout);
    super.onCreate(savedInstanceState, HomeOps.class, this);

    Toolbar toolbar = (Toolbar) findViewById(R.id.homeview_toolbar);
    Boolean show = toolbar.showOverflowMenu();

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.homeview_menu_common, menu);
    return super.onCreateOptionsMenu(menu);
}


}

2 个答案:

答案 0 :(得分:0)

1)将app:showAsAction="always"替换为app:showAsAction="never"

2)您的基本活动实施应如下所示:

public class MainActivity extends AppCompatActivity {

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

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

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.action_favorite:
            // Do your stuff for favorite menu item
            break;

        case R.id.homeview_toolbar_overflow_logout:
            // Do your stuff for homeview_toolbar_overflow_logout menu item
            break;
    }

    return super.onOptionsItemSelected(item);
}

}

3)使用Theme.AppCompat.Light.DarkActionBar作为您的活动主题。如果你没有&#39; 我想在您的主题中添加ActionBar,请务必在setSupportActionBar(toolbar);中致电onCreate()

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

    Toolbar toolbar = (Toolbar) findViewById(R.id.homeview_toolbar);
    setSupportActionBar(toolbar);
}

答案 1 :(得分:0)

我终于解决了以下问题:

使用Toolbar.inflateMenu()来扩充工具栏中的菜单项。 使用Toolbar.setOnMenuItemClickListener()设置点击监听器。