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