我一直在寻找如何创建一个弹出窗口或对话框,并提供4个可选项的方法。
我在Android开发者网站上看到了这张图片:
有人知道如何编写类似右侧的那个东西吗?我不需要在文本旁边添加任何图标,我只需要能够从4个选项中进行选择即可。
您可以创建一个包含您想要显示的选项的 String
数组,然后将该数组传递给一个使用方法 setItems(CharSequence[], DialogInterface.OnClickListener)
的 AlertDialog.Builder
。
例如:
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();
输出结果(在Android 4.0.3上):
(背景地图未包含。;))
试试这个:
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();
}
弹出窗口就是AlertDialog
。所以您只需要创建AlertDialog
,然后使用LayoutInflater
填充所需的视图,并使用AlertDialog
的setView()
方法设置填充的视图。
备选方案
这是我的第一篇帖子,很高兴分享我的代码!这对我有用:
在 OnCreate 事件之前加入以下两行:
final String[] Options = {"Red", "Blue"};
AlertDialog.Builder window;
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();
.create()
,.show()
会返回由构造器创建的对话框并将其显示出来。 - TronicZomB