118 votes

Android : créez une fenêtre contextuelle avec plusieurs options de sélection.

J'ai cherché comment créer une fenêtre popup ou une boîte de dialogue avec 4 options à choisir.

Je vois cette image sur le site des développeurs Android :

enter image description here

Quelqu'un sait-il comment coder quelque chose comme celui de droite ? Je n'ai pas besoin d'icônes à côté de mon texte, j'ai juste besoin de pouvoir choisir parmi 4 options.

307voto

Zabri Points 1972

Vous pouvez créer un String avec les options que vous voulez afficher, puis vous passez le tableau à un fichier 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();

Le résultat (sur Android 4.0.3) :

Output

(Le fond de carte n'est pas inclus. ;))

7voto

Nikhil jassal Points 139

Essayez ceci :

public void onClick(View 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();
}

6voto

Vishal Pawale Points 1618

Les pop ups ne sont rien d'autre que AlertDialog Il suffit donc de créer AlertDialog puis gonflez la vue souhaitée en utilisant LayoutInflater et définir la vue gonflée en utilisant setView() méthode de AlertDialog

3voto

Bart _ Points 41

OPTION DE RECHANGE

C'est mon premier post, donc je suis excitée 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 ceci

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X