web-dev-qa-db-fra.com

Android: créer un popup avec plusieurs options de sélection

J'ai cherché autour de vous pour savoir comment créer une fenêtre contextuelle ou une boîte de dialogue comportant 4 options à choisir.

Je vois cette image sur le site de développeur Android:

enter image description here

Est-ce que quelqu'un sait comment coder quelque chose comme celui de droite? Je n'ai besoin d'aucune icône à côté de mon texte, il me suffit de pouvoir sélectionner 4 options.

88
Cornomaniac

Vous pouvez créer un tableau CharSequence avec les options que vous souhaitez afficher, puis le passer à un AlertDialog.Builder Avec la méthode setItems(CharSequence[], DialogInterface.OnClickListener).

Un exemple:

String[] colors = {"red", "green", "blue", "black"};

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Pick a color");
builder.setItems(colors, new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        // the user clicked on colors[which]
    }
});
builder.show();

La sortie (sur Android 4.0.3):

Output

(Carte de fond non incluse.;))

262
zbr

Les pop-ups ne sont rien d'autre que AlertDialog. Il vous suffit donc de créer AlertDialog, puis gonflez votre vue souhaitée à l'aide de LayoutInflater et définissez la vue gonflée à l'aide de setView() méthode de AlertDialog

6
Vishal Pawale

OPTION ALTERNATIVE

Ceci est mon premier post donc je suis ravi de partager mon code! Cela a fonctionné pour moi:

Placez ces deux lignes au-dessus de l'événement OnCreate

final String[] Options = {"Red", "Blue"};
AlertDialog.Builder window;

Placez ce code sur l'événement qui déclenchera cette

window = new AlertDialog.Builder(this);
window.setTitle("Pick a color");
window.setItems(Options, new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        if(which == 0){
           //first option clicked, do this...

        }else if(which == 1){
           //second option clicked, do this...

        }else{
        //theres an error in what was selected
            Toast.makeText(getApplicationContext(), "Hmmm I messed up. I detected that you clicked on : " + which + "?", Toast.LENGTH_LONG).show();
        }
    }
});

window.show();
1
Bart _

Essaye ça :

vide public onClick (Afficher v) {

            final String[] fonts = {"Small", "Medium", "Large", "Huge"};

            AlertDialog.Builder builder = new AlertDialog.Builder(TopicDetails.this);
            builder.setTitle("Select a text size");
            builder.setItems(fonts, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    if ("Small".equals(fonts[which])){
                        Toast.makeText(TopicDetails.this,"you nailed it", Toast.LENGTH_SHORT).show();
                    }
                    else if ("Medium".equals(fonts[which])){
                        Toast.makeText(TopicDetails.this,"you cracked it", Toast.LENGTH_SHORT).show();
                    }
                    else if ("Large".equals(fonts[which])){
                        Toast.makeText(TopicDetails.this,"you hacked it", Toast.LENGTH_SHORT).show();
                    }
                    else if ("Huge".equals(fonts[which])){
                        Toast.makeText(TopicDetails.this,"you digged it", Toast.LENGTH_SHORT).show();
                    }
                    // the user clicked on colors[which]

                }
            });
            builder.show();

}

1
Nikhil jassal