2011-03-23 25 views
18

Según el código aquí, http://developer.android.com/guide/topics/ui/dialogs.html#CustomDialog. Con éxito puedo crear un cuadro de diálogo personalizado con el fondo y los botones en el interior, pero todavía hay algo que no está bien. todavía hay un espacio para la barra de título, y hay un borde alrededor de la vista. ¿Cómo deshacerse de estos títulos y bordes?Diálogo personalizado sin título y borde

aquí es mi diálogo

Dialog pauseMenu = new Dialog(this,R.xml.pause_dialog); 
pauseMenu.setContentView(R.layout.pause_menu); 
return pauseMenu; 

y aquí está mi diseño de pausa

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="wrap_content" android:id="@+id/linearLayout1" android:layout_width="wrap_content" android:background="@drawable/pause_menu_cropped" android:layout_gravity="center" android:gravity="center|center_horizontal"> 
    <TableLayout android:layout_width="wrap_content" android:id="@+id/tableLayout1" android:layout_height="wrap_content"> 
     <ImageButton android:src="@drawable/pause_button_quit" android:layout_width="wrap_content" android:background="@drawable/pause_button_quit" android:id="@+id/imageButton2" android:layout_height="wrap_content"></ImageButton> 
     <ImageButton android:src="@drawable/pause_button_option" android:layout_width="wrap_content" android:background="@drawable/pause_button_option" android:id="@+id/imageButton1" android:layout_height="wrap_content"></ImageButton> 
    </TableLayout> 
</LinearLayout> 
+0

¿Se puede adjuntar una imagen? –

+0

posible duplicado de [Cómo crear un Diálogo/Ventana emergente completamente personalizado en Android (cambiar el diseño de la ventana de colores y el dialogo de la superposición)] (http://stackoverflow.com/questions/3728990/how-to-create-a-completely-custom -dialogue-popup-in-android-change-overlay-colou) –

+0

Estaba a punto de publicar una pregunta similar y la solución se responde claramente a continuación. – mobibob

Respuesta

17

un cuadro de diálogo no se puede crear sin un título. Más abajo en ese tutorial se menciona:

Un diálogo hecho con la clase Dialog base debe tener un título. Si no llama al call setTitle(), el espacio utilizado para el título permanece vacío, pero todavía está visible . Si no desea un título en , debe crear su cuadro de diálogo personalizado utilizando la clase AlertDialog . Sin embargo, debido a que se crea un AlertDialog más fácil con la clase AlertDialog.Builder, no tiene acceso al método setContentView (int) que se utilizó anteriormente. En su lugar, debe usar setView (Ver). Este método acepta un objeto Ver, por lo que necesita inflar el objeto de vista raíz del diseño desde XML.

This answer resuelve tanto el título como el problema de la frontera usando un estilo personalizado.

+1

parece que entiendo sobre el título, pero ¿qué parte dice sobre el borde? – Fugogugo

+0

esta línea en la respuesta se encarga de que: ​​@ color/transparent_white –

+0

En lugar de AlertDialog podemos resolver esto mediante 'cuadro de diálogo final = cuadro de diálogo nuevo (ShortcutActivity.this); \t \t \t \t dialog.requestWindowFeature (Window.FEATURE_NO_TITLE); ' –

89

creo que esto le ayudará a cabo

gameover sería el nombre de diálogo y en setContentView sería ur diseño diálogo personalizado

gameOver = new Dialog(Main.this); 
gameOver.requestWindowFeature(Window.FEATURE_NO_TITLE); 
gameOver.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); 
gameOver.setCancelable(false); 
gameOver.setContentView(R.layout.gameover); 
+17

Esta debería ser la respuesta aceptada. +1 –

+1

en la versión de Android debajo de 4.1, el ancho del diálogo cubre la pantalla completa, lo cual es malo para UI –

+0

Estoy de acuerdo con @BasavarajHampali, esto resuelve el problema pero el ancho ocupa todo el ancho ... Me pregunto cómo resolver esto? – KarenAnne

3
Dialog dialog = new Dialog(Main.this); 
dialog.getWindow(); 
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
9
  1. hacer una clase de esta manera:

    public class CustomDialog extends Dialog { 
        public AlertFinishiView(Context context) { 
         super(context); 
         requestWindowFeature(Window.FEATURE_NO_TITLE); 
         setContentView(R.layout.dialog); 
         getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); 
        } 
    } 
    
  2. hacer un xml en la carpeta layut con este diálogo

    <?xml version="1.0" encoding="utf-8"?> 
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        android:background="@android:color/transparent"> 
    
        <RelativeLayout 
         android:layout_width="220dp" 
         android:layout_height="140dp" 
         android:layout_centerHorizontal="true" 
         android:layout_centerVertical="true"    
         android:background="@drawable/bg_custom_dialog" > 
    
         <Button android:id="@+id/button1" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:layout_centerHorizontal="true" 
         android:layout_centerVertical="true" 
         android:text="Button" /> 
    
        </RelativeLayout> 
    
    </RelativeLayout> 
    
  3. añadir la imagen de arriba en la carpeta con el nombre dibujable bg_custom_dialog.9 nombre.png

bg_custom_dialog

  1. llamada en su actividad:

    CustomDialog customDialog = new CustomDialog(this); 
    customDialog.show(); 
    
3
Dialog dialog = new Dialog(context); 
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
1

Pruebe el siguiente estilo en su styles.xml:

<style name="free_floating_dialog" parent="@android:style/Theme.Holo.Light.Dialog"> 
    <item name="android:windowBackground">@android:color/transparent</item> 
    <item name="android:windowIsFloating">true</item> 
    <item name="android:windowNoTitle">true</item> 
    <item name="android:windowCloseOnTouchOutside">false</item> 
</style> 

Para ver más opciones "Theme.Holo.Light.Dialog", que es parte de las fuentes de Android (desde Honeycomb), o cualquier otro estilo de diálogo en el que se base.

Entonces sólo tiene que utilizar este estilo como base para su propio diálogo:

Dialog myDialog = new Dialog(getActivity(), R.style.free_floating_dialog); 
myDialog.setContentView(R.layout.myContent); 
1

Utilice esta, funciona perfectamente;

   dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); //before  
      dialog.setContentView(R.layout.your_dialog_layout); 
0

utilizo este código y que funcionan bien:

AlertDialog.Builder builder = new AlertDialog.Builder(contextActivity,android.R.style.Theme_Holo_Dialog_NoActionBar); 
AlertDialog alertDialog = builder.create(); 
alertDialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
alertDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); 
alertDialog.setView(myLayout,0,0,0,0); 
alertDialog.show(); 
Cuestiones relacionadas