2009-12-29 10 views
19

Je souhaite créer un Dialog personnalisé. Parce que je n'aime pas son style, je veux avoir un rectangle arrondi plutôt que des angles vifs. Je sais comment le mettre en œuvre par thème AndroidManifest.xml, par exemple, je l'utilise:Personnalisation de la boîte de dialogue en étendant Dialog ou AlertDialog

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

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

Comment puis-je mettre en œuvre un résultat similaire en prolongeant la Dialog ou AlertDialog?

Répondre

41

Dans le constructeur de votre classe qui étend l'appel Dialog super(context, R.style.CustomDialog); je l'ai fait plusieurs fois pour créer des boîtes de dialogue personnalisées avec des thèmes spécifiques.

Toutefois, si le thème est la seule chose au sujet de la boîte de dialogue que vous voulez changer, vous pouvez essayer juste instancier une instance de la classe de dialogue et passez l'ID du thème comme Dialog dialog = new Dialog(context, R.style.CustomDialog);

Un exemple d'extension de dialogue:

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

le reste du code que vous ajouterez à cette classe va être à peu près exactement comme ce que vous écrivez dans une classe d'activité.

+0

oui, merci pour votre aide .i dialog Dialog utilisé = nouveau Dialog (contexte, R.style.CustomDialog), le travail très bien. mais je ne peux pas écrire étend dialogue, pouvez-vous me donner des extraits de code – pengwang

+0

J'ai ajouté un exemple de l'extension de dialogue. –

+0

est-il possible de définir des boutons positifs et négatifs comme nous le faisons dans Dialog? i: e .setPositiveButton ("OK", nouvelle DialogInterface.OnClickListener() { public void dialogue onClick (de DialogInterface, int whichButton) {// bouton positif cliqué getActivityInstance() onOkClicked (GeneralDialogFragment.this);. } } –

Questions connexes