2009-12-29 8 views
19

Desidero creare un'edizione personalizzata Dialog. Perché non mi piace il suo stile, voglio avere un rettangolo arrotondato piuttosto che angoli acuti. Io so come implementarlo per tema in AndroidManifest.xml, per esempio, io uso:Personalizzazione della finestra di dialogo tramite l'estensione di Dialog o AlertDialog

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

E 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> 

Come posso implementare un risultato simile estendendo il Dialog o AlertDialog?

risposta

41

Nel costruttore della classe che estende Dialog chiamata super(context, R.style.CustomDialog); L'ho fatto molte volte per creare finestre di dialogo personalizzate con temi specifici.

Tuttavia, se il tema è l'unica cosa sulla finestra che si desidera modificare, si potrebbe provare solo istanziare un'istanza della classe Dialog e passarlo l'ID tema come Dialog dialog = new Dialog(context, R.style.CustomDialog);

Un esempio di dialogo che si estende:

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); 
    } 
} 

il resto del codice si aggiungerà a questa classe sta per essere più o meno esattamente come quello che si può scrivere in una classe di attività.

+0

sì, grazie per il vostro aiuto. Finestra di dialogo di dialogo utilizzato = nuova finestra di dialogo (contesto, R.style.CustomDialog), il lavoro molto bene. ma non riesco a scrivere estende Dialog, puoi darmi alcuni frammenti di codice – pengwang

+0

Ho aggiunto un esempio di finestra di dialogo estesa. –

+0

è possibile impostare pulsanti positivi e negativi come facciamo in Dialogo? I: E .setPositiveButton ("OK", nuova DialogInterface.OnClickListener() { dialogo pubblico onClick (DialogInterface vuoto, int WhichButton) {// pulsante positivo cliccato getActivityInstance() onOkClicked (GeneralDialogFragment.this);. } } –

Problemi correlati