2009-12-29 7 views
19

Quiero hacer un Dialog personalizado. Como no me gusta su estilo, quiero tener un rectángulo redondeado en lugar de esquinas afiladas. Yo sé cómo ponerlo en práctica por el tema en AndroidManifest.xml, por ejemplo, yo uso:Diálogo de personalización al extender Diálogo o AlertDialog

android:theme="@style/Theme.CustomDialog" 

Y Theme.CustomDialog.xml:

<style name="Theme.CustomDialog" parent="android:style/Theme.Dialog"> 
     <item name="android:windowBackground">@drawable/filled_box</item> 
     <item name="android:windowNoTitle">true</item> 

filled_box.xml 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <solid android:color="#ffffffff"/> 
    <stroke android:width="3dp" color="#ffff8080"/> 
    <corners android:radius="30dp" /> 
    <padding android:left="10dp" android:top="10dp" 
     android:right="10dp" android:bottom="10dp" /> 
</shape> 

¿Cómo puedo implementar un resultado similar al extender el Dialog o AlertDialog?

Respuesta

41

En el constructor de su clase que se extiende Llamada de diálogo super(context, R.style.CustomDialog); He hecho esto muchas veces para crear cuadros de diálogo personalizados con temas específicos.

Sin embargo, si el tema es la única cosa sobre el diálogo que desea cambiar, usted podría intentar simplemente crear instancias de una instancia de la clase de diálogo y lo pasa el ID de tema como Dialog dialog = new Dialog(context, R.style.CustomDialog);

Un ejemplo de diálogo se extiende:

public class MyDialog extends Dialog 
{ 
    public MyDialog(final Context context) 
    { 
     // Set your theme here 
     super(context, R.style.MyDialogTheme); 

     // This is the layout XML file that describes your Dialog layout 
     this.setContentView(R.layout.myDialogLayout); 
    } 
} 

el resto del código se le agrega a esta clase va a ser casi exactamente como lo que se escriba en una tipo de actividad.

+0

sí, gracias por su ayuda. Utilicé Diálogo diálogo = nuevo Diálogo (contexto, R.style.CustomDialog), el trabajo muy bien. pero no puedo escribir el cuadro de diálogo de extensiones, ¿me puede dar algunos fragmentos de código? – pengwang

+0

Agregué un ejemplo de ampliar el cuadro de diálogo. –

+0

¿es posible establecer botones positivos y negativos como lo hacemos en Diálogo? I: E .setPositiveButton ("OK", nueva DialogInterface.OnClickListener() { de diálogo onClick (DialogInterface public void, int whichButton) {// botón positiva clic getActivityInstance() (onOkClicked GeneralDialogFragment.this);. } } –

Cuestiones relacionadas