8
votes

Comment aligner le centre de dialogue personnalisé dans Android?

Je travaille sur l'application où je voulais afficher la boîte de dialogue pour être la taille de l'écran. J'ai donc utilisé le code ci-dessous.J'ai eu la solution via ici message d'alerte N'affiche pas dans la boîte de dialogue d'alerte?

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


2 commentaires

Avez-vous essayé d'écrire D.Getwindow (). Setattributes (LP); avant d.Show (); ?


J'ai essayé mais il ne affichera pas la boîte d'alerte à la taille de la fenêtre


6 Réponses :


1
votes

Essayez d'utiliser Android: Layout_gravity = "Centre" au lieu d'Android: Gravity = "Centre" ... Il peut être utile pour vous ..

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


2 commentaires

Pour une boîte de dialogue personnalisée, vous pouvez faire une seule chose, rendre votre écran entier comme l'écran d'activité et ajouter le thème: @dialog dans AndroidManifest.xml .. Que tout votre contenu s'affiche sous la forme d'une boîte de dialogue.


J'ai eu le Malerdialog? .Window? .Setlayout étiré au parent correspondant, mais je voulais centrer l'alertdialog elle-même à l'écran. Utiliser layout_gravity au lieu de gravité travaillée pour moi!



4
votes

Cela fonctionne pour moi:

lp.height = WindowManager.LayoutParams.WRAP_CONTENT;


3 commentaires

@pushpa: hé, essayez Gravity Center en définissant la hauteur à enveloppe_content


@unReachable: j'ai essayé cela affichera la boîte de dialogue au centre, j'ai vue avec 3 boutons en arrière-plan et je veux cacher cette vue. La teneur en panne de hauteur ne cachera pas la vue d'arrière-plan.


@pushpa: hé dans ce cas, vous pouvez faire l'arrière-plan de votre popup non transparente, vous pouvez utiliser GetWindow (). Ressources de ferbackDrawable (android.r.color.bl Black);



1
votes

Peut-être que cela fonctionne: xxx


0 commentaires

0
votes

note : - Ceci est pour " mise en page personnalisée " ... :)

Je me luttais avec la même chose, et après avoir du mal à se battre pendant des heures. ce résultat

plus tôt, je créais le dilaoge comme ceci: - xxx

après ajout de style "Aucun titre de titre", il a commencé à récupérer la mise en page de la façon dont j'avais Créé.

Pour cela, vous devez créer la mise en page avec les paramètres "FLIDPARENT" et créer le dialogue comme celui-ci xxx

ce qui précède est une partie de codage

vous dans mise en page pièce Placez toute votre mise en page dans relativenelayout

et donnez votre propriété de layouche android: layout_centerinparent = "vrai"

ex: - / p> xxx

et si vous ne voulez pas manquer "Titre", vous pouvez l'avoir dans votre mise en page personnalisée comme textview ..

espère que cela vous aidera. . Comme cela m'a aidé :)


0 commentaires

9
votes

Je suis petit tard, mais mieux tard, alors jamais :-) Vous pouvez utiliser le code ci-dessous: (j'ai vu aussi ici ) xxx

espoir je aidé ...


1 commentaires

Jolie réponse, j'utilise window.setlayout (layoutparams.wrap_content, layoutparams.wrap_content) au lieu de "fenêtre.setlayout (layoutparams.wrap_content, layoutparams.match_content) ', ça marche bien, merci.



0
votes

J'ai utilisé ce style pour afficher des dialogues dans Center Android

<style name="CustomDialogue" parent="Theme.MaterialComponents.Dialog">
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:layout_gravity">center</item>
    <item name="android:minWidth" type="dimen">600dp</item>
    <item name="android:layout_margin" type="dimen">8dp</item>
</style>
  • J'ai utilisé Android: Layout_gravity pour montrer la boîte de dialogue au centre. Li>
  • Minwidth est défini car sinon la boîte de dialogue a l'air plus étroite. Li>
  • Layout_margin est défini, il y a donc suffisamment de marge autour de la boîte de dialogue dans les écrans plus petits. LI> ul>

    avant Android: Layout_gravity = "Centre" h2>

    avant p>

    après Android: Layout_gravity = "Centre" h2>

     après p> p>


0 commentaires