Me gustaría agregar un botón de menú en la esquina superior derecha de mi aplicación y sin barra de acción, como está en la aplicación Google Fit en la captura de pantalla a continuación. ¿Alguien puede ayudarme?
musa
Simplemente puede usar PopupMenu
por ejemplo, agregue lo siguiente a un botón al hacer clic:
public void showPopup(View v) {
PopupMenu popup = new PopupMenu(this, v);
MenuInflater inflater = popup.getMenuInflater();
inflater.inflate(R.menu.actions, popup.getMenu());
popup.show();
}
kotlin
fun showPopup(v : View){
val popup = PopupMenu(this, v)
val inflater: MenuInflater = popup.menuInflater
inflater.inflate(R.menu.actions, popup.menu)
popup.setOnMenuItemClickListener { menuItem ->
when(menuItem.itemId){
R.id.action1-> {
}
R.id.action2-> {
}
}
true
}
popup.show()
}
Para más información, lea Creating a Popup Menu
:
http://developer.android.com/guide/topics/ui/menus.html
-
¿Dónde debo llamar a este método?
– Jorge Saraiva
11 de diciembre de 2017 a las 21:42
-
El elemento de escucha de clics se puede agregar de esta manera: popup.setOnMenuItemClickListener (nuevo PopupMenu.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { switch (item.getItemId()) { case R.id.menuItem1: return true; default : falso retorno; } } });
-Pranav Mahajan
06/03/2018 a las 20:33
-
Utilizar
popup.gravity = Gravity.END
justo antes de inflarlo si desea que esté en el lado derecho de la pantalla (aparece a la izquierda para mí de manera predeterminada)– Quinn
22 de enero de 2020 a las 14:36
-
@Quinn Parece que no es compatible antes del nivel de API 23. Sin embargo, puede pasar la gravedad como argumento del constructor:
PopupMenu(this, v, Gravity.End)
que es compatible.– Máx.
3 de diciembre de 2020 a las 9:31
eugenio h
Agregue una barra de herramientas al diseño y hágalo transparente. Esa es la mejor solución para agregar elementos de menú a un diseño y dar la apariencia de que no hay barra de acción/barra de herramientas.
Diseño
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- The rest of your code here -->
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="56dp"
android:background="@android:color/transparent"/>
</RelativeLayout>
Temática
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
</style>
</resources>
Ejemplo de inflar el menú, configurar el título, hacer clic en el menú oyente.
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.setTitle("Toolbar");
toolbar.inflateMenu(R.menu.menu_main);
toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
if (item.getItemId() == R.id.action_refresh) {
}
return false;
}
});
No establezca la barra de herramientas como la barra de acción. El tema simplemente lo elimina por completo.
-
tiene fondo blanco, no es transparente!
– usuario924
31 de octubre de 2018 a las 9:03
Aashish Kumar
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="https://stackoverflow.com/questions/30417223/@drawable/ic_overflow_holo_dark"
android:contentDescription="@string/descr_overflow_button"
android:onClick="showPopup" />
Agregue las líneas anteriores en el archivo xml donde desea mostrar este menú.
public void showMenu(View v) {
PopupMenu popup = new PopupMenu(this, v);
// This activity implements OnMenuItemClickListener
popup.setOnMenuItemClickListener(this);
popup.inflate(R.menu.actions);
popup.show();
}
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.archive:
archive(item);
return true;
case R.id.delete:
delete(item);
return true;
default:
return false;
}
}
Para más detalles pasa por:
https://developer.android.com/guide/topics/ui/menus.html
-
onMenuItemClick
no existe de que hablas– usuario25
18 de febrero de 2018 a las 19:19
-
onMenuItemClick
completamente funcionando hasta ahora. mira esto– Aashish Kumar
19 de febrero de 2018 a las 14:28
No creo que puedas agregar un menú sin barra de acción. Pero, hay 2 enfoques en los que puedo pensar.
-
Crea una barra de acción del mismo color que la del fondo para que no se vea, a continuación agrega los menús.
-
Simplemente agregue un botón en la esquina superior derecha de la pantalla y coloque el menú desplegable en el diseño.
O use un menú emergente como lo sugiere @MY