He creado una aplicación de Android con NavigationDrawer. Cuando se crea la aplicación, hay un menú de iconos establecido de manera predeterminada, ubicado a la izquierda de la barra de herramientas. Y mi objetivo es agregar otro ícono colocado, por ejemplo, a la derecha de la barra de herramientas. He probado muchos tutoriales siguiéndolos paso a paso, no puedo lograrlo. ¿Alguien podría ayudarme?

Here is my wish

1
zayann 26 may. 2020 a las 17:37

4 respuestas

La mejor respuesta

Necesita crear un menú para lograr esta tarea. Por ejemplo;

res/menu/menu_main.xml:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/new_item"
        android:icon="@drawable/new_icon"
        app:showAsAction="ifRoom">
    </item>
</menu>

Si ya tiene un menú, puede continuar con él.

Después de haber creado el menú, debe inflarlo.

public class MainActivity extends AppCompatActivity {
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }
}

Consulte esto para obtener más detalles sobre el uso del recurso del menú: https://developer.android .com / guide / topics / resources / menu-resource

0
Amila 26 may. 2020 a las 14:53

En actividad

override fun onCreateOptionsMenu(menu: Menu): Boolean {
val inflater: MenuInflater = menuInflater
inflater.inflate(R.menu.game_menu, menu)
return true

}

Para manejar clics en elementos de menú

override fun onOptionsItemSelected(item: MenuItem): Boolean {
// Handle item selection
return when (item.itemId) {
    R.id.new_game -> {
        newGame()
        true
    }
    R.id.help -> {
        showHelp()
        true
    }
    else -> super.onOptionsItemSelected(item)
}

}


En la carpeta del menú game_menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/new_game"
      android:icon="@drawable/ic_new_game"
      android:title="@string/new_game"
      android:showAsAction="always"/> // this icon will be always shown
<item android:id="@+id/help"
      android:icon="@drawable/ic_help"// add you icon image
      android:title="@string/help"
      android:showAsAction="ifRoom"/> // this icon will be shown if there is space available 
</menu>
0
Mohammed Alaa 26 may. 2020 a las 14:52

En su menu.xml agregue:

<item
    android:title="icon"
    app:showAsAction="always"
    android:id="@+id/menuitem_icon"
    android:icon="@drawable/micon"

    >
</item>

Luego, en OnCreateView: setHasOptionsMenu (verdadero); Al cerrar OncreateView a continuación, escriba este método:

@Override

public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    inflater.inflate(R.menu.icon, menu);
    ...
}
0
pranav choudhary 26 may. 2020 a las 14:53

Si está utilizando la barra de herramientas establecida como Barra de acción (setSupportActionBar (Barra de herramientas)) o Barra de acción sola:

En tu actividad:

override fun onCreateOptionsMenu(menu: Menu?): Boolean {
    getMenuInflater().inflate(R.layout.menu_home, menu)
    return true
}

En la carpeta res -> menu agregue un nuevo archivo llamado menu_home (si la carpeta del menú no existe, cree uno):

Agregue tantos elementos que necesite al archivo menu_home:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/item_01"
        android:title="@string/my_title"
        android:icon="@drawable/my_icon"
        app:showAsAction="ifRoom"/>
    ...
</menu>

showAsAction="ifRoom" hace que el icono esté disponible en la barra de herramientas si hay espacio para ello. También tiene una opción para never, ya que va dentro del menú emergente.


Si solo está utilizando la Barra de herramientas (sin configurarla como Barra de acción):

<androidx.appcompat.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    app:menu="@menu/menu_home"
    android:layout_height="?android:attr/actionBarSize"
    android:background="?attr/colorPrimary"
    app:popupTheme="@style/AppTheme.PopupOverlay" />
0
abstractArrow 26 may. 2020 a las 15:19