studio para oncreatemenu menus inflar ejemplos desplegable contextual android listview android-contextmenu

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.