En mi dispositivo Android 2.2.2 la galería se ve realmente bien. Lo que me gustaría hacer en mi propia aplicación es presionar un botón y luego mostrar un menú que se ve así: ¿Cómo hacer un menú transparente y elegante como el "menú de compartir" en la galería de Android?
¿Se está utilizando algún tema/estilo estándar de Android? ¿Alguien sabe de un código de ejemplo para tener un menú como este?
Editar: Me di cuenta de que uno podría imitar este menú con un cuadro de diálogo. Para simplificar las cosas que no estoy usando un ListView en este ejemplo, sólo una única entrada de Vista de Texto para el diálogo:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout_root"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<TextView android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:textColor="#FFF"
android:padding="10dp"
/>
</LinearLayout>
Mostrando el diálogo cuando se presiona un botón:
Dialog dialog = new Dialog(MyActivity.this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.custom_dialog);
TextView text = (TextView) dialog.findViewById(R.id.text);
text.setText("Test option 1");
WindowManager.LayoutParams WMLP = dialog.getWindow().getAttributes();
WMLP.gravity = (Gravity.BOTTOM | Gravity.LEFT);
WMLP.x = 0;
WMLP.y = 0;
dialog.getWindow().setAttributes(WMLP);
dialog.show();
Esto crea un cuadro de diálogo que se acerca al menú de la imagen. Todavía tengo dos problemas, sin embargo:
1) ¿Cómo puedo dibujar este pequeño triángulo en la parte inferior del cuadro de diálogo, como se hace en la imagen de arriba?
2) El botón que se supone que abre el cuadro de diálogo se coloca horizontalmente en el medio de la barra de botones inferior. Entonces, cuando lo presione, el cuadro de diálogo debería aparecer justo encima de ese botón. Lo que me gustaría hacer es esto:
WMLP.x = middleButton.getLeft() + (middleButton.getWidth()/2) - dialog.getWindow().getDecorView().getPaddingLeft() - (WMLP.width/2);
El problema es, que WMLP.width es -2. Supongo que la razón es que el ancho del diseño se establece en "wrap_content" (que es -2) y el ancho real no se conoce en este momento. Entonces, ¿cómo puedo determinar el ancho del diálogo para poder colocarlo concéntricamente sobre otra vista?
Actualización: Finalmente se encontró una gran fuente para un diálogo como este: http://www.londatiga.net/it/how-to-create-quickaction-dialog-in-android/
Es exactamente lo que quería y lo estoy usando en mi aplicación.
** Posible duplicado de [Patrón de IU de acciones rápidas de Android] (http://stackoverflow.com/questions/3059155/android-quick-actions-ui-pattern) y [Submenú de "Compartir Android"] (http://stackoverflow.com/questions/4943287/android-share-submenu)** –
@vikas Es una pregunta diferente a la primera pregunta que encontraste. Sería un duplicado de la segunda pregunta pero hasta ahora no tiene una buena respuesta. –