2012-05-04 15 views
6

Estoy trabajando en la aplicación en la que quería que el cuadro de diálogo muestre el tamaño de la pantalla. Así que utiliza código below.I consiguió la solución a través aquí Alert message is not displaying in alert dialog box?¿Cómo alinear el centro de diálogo personalizado en Android?

AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    TextView title = new TextView(this); 
    title.setText("DM2"); 
    title.setBackgroundColor(Color.DKGRAY); 
    title.setPadding(10, 10, 10, 10); 
    title.setGravity(Gravity.CENTER); 
    title.setTextColor(Color.WHITE); 
    title.setTextSize(20); 


    TextView text = new TextView(this); 
    text.setText("Hello This text"); 
    text.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); 
    text.setTextSize(20);   
    text.setGravity(Gravity.CENTER); 

    //Creates a linearlayout layout and sets it with initial params 
    LinearLayout ll = new LinearLayout(this); 
    ll.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); 
    ll.setGravity(Gravity.CENTER); 
    ll.addView(text); 
    builder.setCustomTitle(title); 
    builder.setPositiveButton(
      "Ok", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int id) { 
        dialog.dismiss(); 
       } 
      }); 

    Dialog d = builder.setView(ll).create(); 
    //Fills up the entire Screen 
    WindowManager.LayoutParams lp = new WindowManager.LayoutParams(); 
    lp.copyFrom(d.getWindow().getAttributes()); 
    lp.width = WindowManager.LayoutParams.FILL_PARENT; 
    lp.height = WindowManager.LayoutParams.FILL_PARENT; 
    d.show(); 
    d.getWindow().setAttributes(lp); 

Pero quiero de diálogo que aparece en el centro alineado. Ahora se muestra en la parte superior de la ventana. Lo intenté con lp.garvity = Gravity.center, pero no funcionó. y Si la orientación del dispositivo cambia, necesito presionar el botón Aceptar más tiempo para cerrar el cuadro de diálogo. ¿Cómo arreglar esto?

Gracias de antemano Pushpa

+0

¿usted intentó escribir d.getWindow() SetAttributes (LP).; antes de d.show(); ? –

+0

Lo intenté pero no mostrará el cuadro de alerta en el tamaño de ventana – pushpa

Respuesta

0

intenta utilizar Android: layout_gravity = "centro" en lugar de Android: la gravedad = "centro" ... Puede ser útil para usted ..

android:layout_gravity="center" 

o

puede probar este ..

<activity android:theme="@android:style/Theme.Dialog" 
     android:name=".Splash"> 
    </activity> 

escribir código XML completa y crea activty simple y añadir un atributo en AndroidManifest.xml, cuando el registro de su actividad en AndroidManifest.xml

+1

Lo intenté con esto pero no funcionó – pushpa

+0

Para el diálogo personalizado puede hacer una cosa, hacer que toda su pantalla sea como la pantalla de Actividad y agregar el Tema: @dialog en AndroidManifest.xml ... que todo su contenido se mostrará como un diálogo. –

3

Esto funciona para mí:

lp.height = WindowManager.LayoutParams.WRAP_CONTENT; 
+0

@unreachable: gracias Pero esto no funciona. – pushpa

+0

@pushpa: oye, prueba el centro de gravedad estableciendo la altura en wrap_content –

+0

@unreachable: Intenté esto mostrará el cuadro de diálogo en el centro, tengo la vista con 3 botones en el fondo y quiero ocultar esa vista. el contenido del alto de altura no ocultará la vista de fondo. – pushpa

1

Tal vez esto funciona:

WindowManager.LayoutParams WMLP = dialog.getWindow().getAttributes(); 

WMLP.gravity = Gravity.CENTER_HORIZONTAL|Gravity.CENTER_VERTICAL 

dialog.getWindow().setAttributes(WMLP); 
+0

@ Perroloco: gracias lo intenté pero no funcionó – pushpa

0

Nota: - Esto es para "diseño personalizado" ... :)

he tenido problemas con el mismo, y después de luchar durante horas que llegué a este resultado

Anteriormente estaba creando el dilaoge así: -

final Dialog dialog = new Dialog(PopupforeditActivity.this); 

Después de agregar el estilo "No titleBar" comenzó a buscar el diseño de la manera que había creado.

Para ello hay que crear el diseño con params "fillParent" y crear el dialoge como esto

final Dialog dialog = new Dialog(PopupforeditActivity.this,android.R.style.Theme_Translucent_NoTitleBar_Fullscreen); 
dialog.setContentView(R.layout.dialog_billing_cart); 
     dialog.setCancelable(true); 

La parte superior es la codificación

Usted en Layout parte poner todo su diseño en RelativeLayout

y darle a su propiedad layout android:layout_centerInParent="true"

Ex: -

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@android:color/transparent" > 


<!--Your Layout--> 

    <ScrollView 
     android:id="@+id/scrlView_FormHolder" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 

     android:layout_centerInParent="true" 

     android:layout_marginBottom="10dp" 
     android:layout_marginLeft="10dp" 
     android:layout_marginRight="10dp" > 
</ScrollView> 

</RelativeLayout> 

Y si no quiere perder la oportunidad "título" Usted puede tener que en su diseño personalizado como TextView ..

esperan que ayude .. Como me :)

6

ayudó estoy poco tarde, pero mejor tarde que nunca :-) puede utilizar el código de abajo: (vi también here)

dialog = new Dialog(activity, android.R.style.Theme_Translucent_NoTitleBar); 

dialog.setContentView(R.layout.activity_upload_photo_dialog); 

Window window = dialog.getWindow(); 
window.setLayout(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
window.setGravity(Gravity.CENTER); 

//The below code is EXTRA - to dim the parent view by 70% 
LayoutParams lp = window.getAttributes(); 
lp.dimAmount = 0.7f; 
lp.flags = LayoutParams.FLAG_DIM_BEHIND; 
dialog.getWindow().setAttributes(lp); 
//Show the dialog 
dialog.show(); 

esperanza ayudé ...

Cuestiones relacionadas