para - Android abre el menú contextual después de hacer clic en el botón
popup menu android (4)
Antes que nada, debes saber por qué deberías usar ContextMenu
. La funcionalidad de ContextMenu
de una Vista es similar al menú de clic derecho en una PC, lo que significa las "operaciones disponibles" en algún elemento.
De acuerdo con su descripción, creo que lo que realmente necesita es un cuadro de diálogo personalizado con una lista , que se muestra al hacer clic en el botón y también puede obtener el elemento enfocado de su ListView
. Luego puede guardar el registro de ContextMenu
para ver algo que realmente necesita el menú :)
Quiero abrir el menú contextual cuando hago clic en un botón, pero también tengo que saber qué elemento de la lista se enfoca cuando hago clic en el botón. ¿Sabes como hacer esto? ¿Qué código debe estar en el método onclick
?
En primer lugar, debe registrar la vista llamando a registerForContextMenu (Ver vista) . Segundo, anule el onCreateContextMenu () para agregar los menús y, por último, anule el onContextItemSelected () para poner la lógica en cada menú.
Estaba buscando lo mismo, y encontré que en lugar del menú contextual, debería usar Diálogos
final CharSequence[] items = {"Red", "Green", "Blue"};
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Pick a color");
builder.setItems(items, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show();
}
});
AlertDialog alert = builder.create();
alert.show();
http://developer.android.com/guide/topics/ui/dialogs.html#AlertDialog
Si realmente quieres hacerlo por la razón que sea ... (en mi caso, por pereza)
Durante la onCreate
de su actividad o en algún lugar antes de que su usuario pueda tocar el botón, registerForContextMenu
en ese botón. Luego, en el botón actual del controlador openContextMenu(View)
, llame a openContextMenu(View)
.
Por ejemplo, tengo un botón declarado en xml como
<Button
android:id="@+id/btn_help"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onHelp"
android:text="@string/help_btn_text" />
en mi onCreate
registerForContextMenu(findViewById(R.id.btn_help));
y en la función onHelp
public void onHelp(View v) {
openContextMenu(v);
}
esto funciona porque la Vista v es la misma que la vista registrada para el menú contextual.