ฉันพยายามหาวิธีสร้างป๊อปอัปหรือกล่องโต้ตอบที่มี 4 ตัวเลือกให้เลือก
ฉันเห็นภาพนี้บนไซต์นักพัฒนา Android:
มีใครรู้วิธีการเขียนโค้ดบางอย่างเช่นด้านขวา? ฉันไม่ต้องการไอคอนใด ๆ ถัดจากข้อความของฉันฉันแค่ต้องสามารถเลือกได้จาก 4 ตัวเลือก
ฉันพยายามหาวิธีสร้างป๊อปอัปหรือกล่องโต้ตอบที่มี 4 ตัวเลือกให้เลือก
ฉันเห็นภาพนี้บนไซต์นักพัฒนา Android:
มีใครรู้วิธีการเขียนโค้ดบางอย่างเช่นด้านขวา? ฉันไม่ต้องการไอคอนใด ๆ ถัดจากข้อความของฉันฉันแค่ต้องสามารถเลือกได้จาก 4 ตัวเลือก
คำตอบ:
คุณสามารถสร้างString
อาร์เรย์กับตัวเลือกที่คุณต้องการที่จะแสดงมีแล้วผ่านอาร์เรย์ไปยังมีวิธีการAlertDialog.Builder
setItems(CharSequence[], DialogInterface.OnClickListener)
ตัวอย่าง:
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):
(ไม่รวมแผนที่พื้นหลัง;))
ป๊อปอัปไม่มีอะไรนอกจากAlertDialog
คุณต้องสร้างAlertDialog
จากนั้นขยายมุมมองที่คุณต้องการโดยใช้LayoutInflater
และตั้งค่ามุมมองที่สูงเกินจริงโดยใช้setView()
วิธีการAlertDialog
ลองสิ่งนี้:
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();
}
ตัวเลือกทางเลือก
นี่เป็นโพสต์แรกของฉันดังนั้นฉันจึงรู้สึกตื่นเต้นที่จะแบ่งปันรหัสของฉัน! สิ่งนี้ใช้ได้ผลสำหรับฉัน:
วางสองบรรทัดนี้ไว้เหนือเหตุการณ์ 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()
จะส่งคืนกล่องโต้ตอบที่สร้างโดยผู้สร้างจากนั้นแสดงด้วย