2010-03-06 9 views
17

Estoy intentando abrir un cuadro de diálogo sobre el clic de widgets. He resuelto el problema que describe la actividad iniciada al hacer clic con android:theme="@android:style/Theme.Dialog". Desafortunadamente no puedo alcanzar el mismo aspecto de un diálogo.Hacer que la actividad de Android se parezca al cuadro de diálogo

Este es el resultado:

Dialog from widget

En su lugar, me gustaría llegar a este resultado (excepto el botón, por supuesto):

Desired dialog from widget

(el cuadro de diálogo Reproductor se puede ver manteniendo la pantalla presionada)

Como puede ver, hay algunas diferencias: el color de los elementos de la lista, el color del texto y el separador de elementos de la lista. ¿Hay un tema/estilo predefinido para obtener el mismo aspecto de un diálogo estándar? Si no, ¿cuáles son los pasos a seguir para alcanzar ese resultado?

He visto que el widget proporcionado por FoxyRing tiene el comportamiento que me gustaría tener.

Respuesta

22

por qué no utilizar una Actividad Principal "tradicional" con un diseño de fondo transparente

y llamar a un diálogo estándar de ella?

... bueno, si te entendí correctamente, eso haría el truco de una manera muy fácil, ¿no?

+0

Sí ... supongo que sí ... vamos a tratar ... – Matroska

+5

Funciona. He configurado una actividad con android: theme = "@ android: style/Theme.Translucent.NoTitleBar" y luego usé el código simple para crear un diálogo de lista manteniendo la atención para finalizar la actividad en el diálogo cancelar/clic. – Matroska

+0

me alegra saber que funcionó como querías. Saludos, H. – Hubert

3

puede crear dinámicamente el diálogo como este:

 Context mContext = this; 
     Dialog dialog = new Dialog(mContext); 

     dialog.setContentView(R.layout.data_dialog); 
     dialog.setTitle("Your title"); 

     AlertDialog.Builder builder; 
     AlertDialog alertDialog; 

     LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(LAYOUT_INFLATER_SERVICE); 
     View layout = inflater.inflate(R.layout.data_dialog, 
       (ViewGroup) findViewById(R.id.AbsoluteLayout01)); 

     builder = new AlertDialog.Builder(mContext); 
     builder.setView(layout); 
     alertDialog = builder.create(); 
     alertDialog.show(); 

     final EditText txtUsername = (EditText) layout.findViewById(R.id.txtUsername); 

     final AlertDialog thisDialog = alertDialog; 

     Button btnSave = (Button) layout.findViewById(R.id.btnSave); 
     btnSave.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 

       String strtxtUsername = txtUsername.getText().toString(); 

       //do something... 

      } 
     });     

para cerrar el diálogo, llame thisDialog.dismiss();

El estilo se parece a la Theme.Light.NoTitleBar regular con un ListView con un icono y una Texto del título.

Espero que ayude!

+0

El problema es cómo llamarlo cuando se presiona un widget. Debería estar dentro de una actividad ... y una actividad siempre debe mostrar algo ¿cierto? – Matroska

+0

Oh, lo siento, te malentendí entonces. Prueba a poner el tema de la actividad a 'android: theme = "@ android: estilo/Theme.Translucent.NoTitleBar"' – Nick

Cuestiones relacionadas