2012-01-05 15 views
8

Estoy trabajando en mi primera aplicación para Android y estoy tratando de darle estilo a mi actividad. En última instancia, me gustaría que mi actividad tenga el mismo aspecto que un diálogo. Me he dado todas mis actividades el estilo Theme.Dialog usando el siguiente código en mi AndroidManifest.xml:¿Cómo puedo mostrar mi actividad como un diálogo en Android?

<application 
    android:icon="@drawable/group" 
    android:label="@string/app_name" 
    android:theme="@android:style/Theme.Dialog"> 
</application> 

Esto le da a mis actividades de la "flotante" aspecto y las fronteras de un diálogo, pero no el título de estilo. El título solo tiene el mismo color y apariencia que el fondo de diálogo general, no el fondo y el borde del "encabezado" como en un cuadro de diálogo "real". Observe cómo en ambos ejemplos el encabezado tiene un borde agradable debajo y en el segundo, tiene un fondo degradado.

¿Hay alguna manera de asegurarse de que el título de mi actividad herede de algún modo el título del diálogo del sistema para replicar efectivamente el aspecto de un diálogo para mi actividad? Además del borde y "flotante" que viene con el Theme.Dialog ¿estilo?

Tenga en cuenta que no quiero llamar a mi actividad como un cuadro de diálogo de otra, sólo quiero que MIRADA como un dilaog, incluso cuando se carga en respuesta a un intento de acuerdo por intención de mi manifiesta filtros.

Dialog Example 1

Dialog Example 2

ADD: ¿Hay quizás alguna manera de que pueda tener mi actividad, cuando se hace girar en onCreate(), llame a algún método para transformarse en un diálogo real? Tenga en cuenta que la actividad aún debe ser capaz de responder a los intentos del sistema.

+0

¿qué cuadro de diálogo desea? primero uno o segundo en imagen. – Sujit

+0

Ambos son el resultado de llamar a los métodos estándar de diálogo de muestra.El segundo es el diálogo tal como aparece en el tema con la interfaz de usuario TouchWiz de Samsung, el primero es el que parece con el tema de la máscara que estoy ejecutando en Cyanogenmod. Básicamente, solo quiero que mi actividad aparezca como si fuera un cuadro de diálogo según el tema que ejecuta el dispositivo del usuario, igual que si utilizara AlertDialog.Builder. – eidylon

Respuesta

2

Después de decidir que mirar lo que quería hacer , en lugar de cómo hacerlo específicamente, encontré un enfoque diferente. Repetí mi pregunta buscando ideas de enfoque en lugar de ideas de implementación here. GalDude33 me ayudó a descubrir cómo lograr lo que quería. Su respuesta fue la respuesta a esta Q.

+0

Claro, pero el problema con este enfoque es que el resultado no tiene propiedades de Actividad. P.ej. no puedes mostrar ActionBar en tu diálogo. –

+0

Debo admitir que no poder usar el ActionBar es la mayor desventaja ... y tener que rodar mi propia barra de herramientas similar. Si puede mostrarme una forma de obtener la funcionalidad de diálogo y también poder usar la Barra de acción, ¡estaría muy feliz! – eidylon

+0

Descubrí que puede cambiar la dimensión de la actividad en el método onCreate (...), sin embargo, no sé cómo hacer que los bordes negros sean semitransparentes, de modo que se vea como el diálogo: 'WindowManager.LayoutParams params = getWindow(). getAttributes(); params.height = 300; params.width = 100; getWindow(). SetGravity (Gravity.CENTER); getWindow(). SetAttributes (params); ' –

2

Puede hacer como sigue ..

crear un diseño para el diálogo y establecer en la siguiente manera.

Dialog mDialog = new Dialog(MainScreen.this,android.R.style.Theme_Translucent_NoTitleBar); 

mDialog .requestWindowFeature(Window.FEATURE_NO_TITLE); 

mDialog .setContentView(R.layout.dialoglayout); 
mDialog .show(); 
+0

Tendría que agregar esto en el código en otra actividad, ¿no? Mi actividad responde directamente a los intentos de iniciador (accesos directos creados en la pantalla de inicio), y quiero que se vea como un diálogo cuando el sistema lo llama para esos intentos, o directamente a través del iniciador, también. – eidylon

4

tema de un cuadro de diálogo se puede personalizar mediante la especificación de que como padre, en styles.xml

<resources> 
<style name="MyDialogTheme" parent="android:Theme.Dialog"> 
      <item name="android:background">#ffdddddd</item> 
</style> 
</resources> 

Si usted le da un color diferente para el fondo de estilo de diálogo personalizado y el diseño (añadir android:background="#ffffffff" bajo encabezado de diseño en su archivo main.xml), daría un cuadro de diálogo del sistema como mirar.

Espero que esto ayude ..

omitida mencionar: Consulte el tema personalizado en el manifiesto de la siguiente manera:

android:theme="@style/MyDialogTheme" 
+0

Bueno, ya estoy usando el estilo 'Theme.Dialog' en mi actividad, pero solo te da la apariencia flotante y el límite alrededor de tu actividad. No da estilo a la barra de título de la actividad. No necesariamente quiero personalizar el aspecto del diálogo, estoy tratando de hacer que mi actividad se vea exactamente como el diálogo intrínseco (sin embargo, eso puede verse según el tema del teléfono del usuario). – eidylon

Cuestiones relacionadas