2012-01-21 7 views
6

J'ai créé un AlertDialog personnalisé par le code suivant:Android: Custom AlertDialog

AlertDialog.Builder builder; 
AlertDialog alertDialog; 

LayoutInflater inflater = (LayoutInflater)ActivityName.this.getSystemService(LAYOUT_INFLATER_SERVICE); 
View layout = inflater.inflate(R.layout.custom_layout,(ViewGroup)findViewById(R.id.layout_root)); 

       builder = new AlertDialog.Builder(getParent()); 
       builder.setView(layout); 
       alertDialog = builder.create(); 
       alertDialog.show(); 

problème est le pop-up est entouré par défaut arrière-plan de dialogue ayant un propre espace vide d'un titre (le titre est pas encore défini). Comment puis-je supprimer cela. J'ai essayé de mettre le style personnalisé à travers ContextThemeWrapper comme builder = new AlertDialog.Builder(new ContextThemeWrapper(getParent(), R.style.CustomDialogTheme));

Mais son ne fonctionne pas. Comment je fais ça?!!! Merci d'avance. de style personnalisé xml est donné ci-dessous:

<style name="CustomDialogTheme" parent="android:style/Theme.Dialog.Alert"> 
      <item name="android:windowIsFloating">false</item> 
      <item name="android:windowNoTitle">true</item> 
     </style> 

This is the output on the emulator

+0

ne montrant un titre va confondre l'utilisateur, vous devez afficher un titre sur la boîte de dialogue, parce que son la norme attendue. – JoxTraex

+0

J'ai attaché le titre dans la mise en page (c'est-à-dire "Set As ..." comme vous pouvez le voir) – IronBlossom

Répondre

16

suite à l'utilisation

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

Gonfler votre mise en page et définir la vue au contenu de la boîte de dialogue et

dialog.setContentView(view); 
+1

merci jitendra !! il supprime l'arrière-plan par défaut mais j'ai un autre problème maintenant. Cela, l'application qui fonctionne est définie sur Theme.NoTitleBar.Fullscreen mais lorsque la boîte de dialogue s'affiche, la barre de titre supérieure redescend et la boîte de dialogue n'est pas en position centrale mais plutôt en haut à gauche (par défaut) de la fenêtre. Pouvez-vous m'aider à ce sujet ??? – IronBlossom

+1

dialogue de dialogue d'utilisation = nouvelle boîte de dialogue (this, android.R.style.Theme_Translucent_NoTitleBar.Fullscreen); – jeet

+0

et j'ai résolu le problème du centrage du dialogue !! merci – IronBlossom

7
AlertDialog dialog = new AlertDialog.Builder(this) 
.setView(getLayoutInflater().inflate(R.layout.custom_dialog, null)) 
.create(); 

Pour écouter les événements de l'interface utilisateur:

View view = getLayoutInflater().inflate(R.layout.custom_dialog, null); 
Button btn = (Button)view.findViewById(R.id.the_id_of_the_button); 
btn.setOnClickListener(blah blah); 
AlertDialog dialog = new AlertDialog.Builder(this) 
    .setView(view) 
    .create();