Android: create a popup that has multiple selectio

2019-01-16 09:22发布

问题:

I've been searching around trying to figure out how to create a popup or a dialog that has 4 options to choose from.

I see this picture on the Android developer site:

Does anyone know how to code up something like the one on the right? I don't need any icons next to my text, I just need to be able to select from 4 options.

回答1:

You can create a CharSequence array with the options you want to show there and then pass the array to an AlertDialog.Builder with the method setItems(CharSequence[], DialogInterface.OnClickListener).

An example:

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

The output (on Android 4.0.3):

(Background map not included. ;))



回答2:

The pop ups are nothing but AlertDialog.So you just need to create AlertDialog, then inflate your desired view using LayoutInflater and set the inflated view using setView() method of AlertDialog



回答3:

Try this :

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

}