如何将自定义菜单添加到actionBar

时间:2018-01-07 16:11:31

标签: android user-interface

我正在使用这种结构的应用程序中工作:

该应用没有初始的ActionBar,因此我以这种方式在每个Activity的OnCreate上添加它:

  android.support.v7.widget.Toolbar barra =(android.support.v7.widget.Toolbar) getLayoutInflater().inflate(local.quick_stuff.R.layout.barra_herramientas,null);
    LinearLayout layout_actividad = (LinearLayout)findViewById(R.id.cp_lista_receta);
    layout_actividad.addView(barra,0);
    setSupportActionBar(barra);
    getSupportActionBar().setTitle("Listado de Recetas");

Then I try to inflate a menu.xml to the ActionBar so the code changes to this:

    android.support.v7.widget.Toolbar barra =(android.support.v7.widget.Toolbar) getLayoutInflater().inflate(local.quick_stuff.R.layout.barra_herramientas,null);
    barra.inflateMenu(R.menu.menu_barra);
    LinearLayout layout_actividad = (LinearLayout) findViewById(R.id.cp_lista_receta);
    layout_actividad.addView(barra,0);
    setSupportActionBar(barra);
    getSupportActionBar().setTitle("Listado de Recetas");         
    getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);

但结果是空白的ActionBar

Menu.xml文件

  <menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/filtro"
        android:icon="@drawable/filtrado_icono"
        android:title="Filtrado"
        android:visible="true"
        app:showAsAction="ifRoom"/>
</menu>

在一天结束的时候,我正在尝试这样做以获得灵活性,因为我希望在我的ActionBar中使用不同的menu.xml来充气。 我认为这可能有点灵活,但有太多的分支编码。

任何帮助?

1 个答案:

答案 0 :(得分:0)

只是为了结束,如果有人需要帮助: 如果你致电setSupportActionBar(barra);

您必须覆盖onCreateOptionsMenu(),因为活动控制了工具栏,并且菜单必须由该方法定义。所以我只是将其添加到活动代码中。

public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.menu_barra, menu);
    return true;
}
相关问题