android - poner - ¿Cómo agregar el menú de desbordamiento a la barra de herramientas?
google toolbar chrome (3)
Defina un Menu
para su Toolbar
de Toolbar
en la carpeta de recursos de res / menu , por ejemplo:
toolbar_menu.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"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".activity.MainActivity">
<item
android:id="@+id/action_sign_out"
android:title="@string/toolbar_sign_out"
app:showAsAction="never"/>
</menu>
La app:showAsAction="never"
configuración app:showAsAction="never"
garantiza que este elemento de menú no se muestre en la Toolbar
, sino que se coloque en el menú de desbordamiento.
El tema de su Activity
debe ser (o derivarse de) uno de los temas Theme.AppCompat.NoActionBar
( Theme.AppCompat.NoActionBar
por ejemplo, o Theme.MaterialComponents.NoActionBar
si está usando componentes materiales ).
En su Activity
, configure su Toolbar
:
Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar);
setSupportActionBar(myToolbar);
Y anule onCreateOptionsMenu()
para inflar su recurso de menú previamente definido:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.toolbar_menu, menu);
return true;
}
Puede anular onOptionsItemSelected()
para definir el comportamiento onClick de su (s) MenuItem
(s):
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_sign_out: {
// do your sign-out stuff
break;
}
// case blocks for other MenuItems (if any)
}
return true;
}
Estoy tratando de usar Android ActionBar
en mi aplicación y tengo una opción que está oculta en el menú de desbordamiento.
Hay mucha documentación, pero es confusa porque la mayor parte de ella solo es relevante para versiones muy antiguas de Android, y cuando intentas aplicar los mismos conceptos, ya no funcionan o funcionan de manera diferente.
Esto está en mi diseño de Activity
<android.support.v7.widget.Toolbar
android:id="@+id/my_toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:titleTextColor="@android:color/white"
android:background="@color/colorPrimary"
android:elevation="4dp"
android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>
Y esto está en el método onCreate()
mi Activity
.
// sets up activity toolbar
Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar);
setSupportActionBar(myToolbar);
myToolbar.showOverflowMenu();
myToolbar.setTitleTextColor(R.color.lightPrimaryText);
También he intentado inflar un archivo xml del menú de onCreateOptionsMenu()
, pero eso tampoco me dio los resultados que quería.
Sencillo, esto copia este código en su MainActivet`
@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;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
Group gp=(Group)findViewById(R.id.order);
return true;
}
return super.onOptionsItemSelected(item);
}`
Ahora haga el archivo del Directorio para el nombre del menú para esto, vaya a Android_Studio-> app Folder-> Right_Click-> New-> Directory-> Enter name menu now Cree un archivo xml allí con menu2.xml name
y pasado este código en el archivo menu2.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_settings"
android:orderInCategory="100"
android:title="@string/action_settings"
app:showAsAction="never"
android:icon="@android:drawable/ic_input_add"
/>
</menu>
Si hay alguna consulta, por favor envíeme un mensaje de texto
en archivo manifiesto declarar
android:theme="@style/AppTheme.NoActionBar"
Me gusta esto :
<activity
android:name=".ActivityName"
android:label="@string/label"
android:theme="@style/AppTheme.NoActionBar" />
y añade esto a tu estilo:
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
y llama a esto en Activity onCreate ():
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
anular este método en la actividad:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.product_list, menu);
//U can find item set icon and stuff...
MenuItem item= menu.findItem(R.id.action_search);
return true;
}
y declare su menú así para el menú de desbordamiento:
<?xml version="1.0" encoding="utf-8"?>
<menu >
<group>
<item
android:id="@+id/sign_out"
android:title="@string/sign_out" />
<item
android:id="@+id/about"
android:title="@string/about" />
</group>
</menu>
y para la selección de elementos de mango llame a este
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
switch (id) {
case R.id.sign_out:
//do stuff
break;
}
return super.onOptionsItemSelected(item);
}
hecho :)