Android : 여러 선택 옵션이있는 팝업 만들기


109

선택할 수있는 4 가지 옵션이있는 팝업 또는 대화 상자를 만드는 방법을 알아 내려고 노력하고 있습니다.

Android 개발자 사이트에서이 사진을 봅니다.

여기에 이미지 설명 입력

오른쪽에있는 것과 같은 코드를 작성하는 방법을 아는 사람이 있습니까? 내 텍스트 옆에 아이콘이 필요하지 않습니다. 4 가지 옵션 중에서 선택할 수 있으면됩니다.

답변:


289

당신은 만들 수 있습니다 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) :

산출

(배경지도는 포함되어 있지 않습니다.;))


5
.create()여기에 불필요 .show()빌더에 의해 생성 된 대화 상자를 반환하고뿐만 아니라 그것을 보여줍니다
TronicZomB

2
이것에 대해 대단히 감사합니다. 나는 정말로 간단한 텍스트 메뉴를위한 xml 레이아웃을 구현하고 싶지 않았고,이 포스트를 우연히 발견 할 때까지 이것을하기위한 쉬운 방법을 찾을 수 없었다.
Christopher Rathgeb 2014 년

이 텍스트를 어떻게 중간에 놓고이 텍스트 안에 색상을 설정할 수 있습니까? 예를 들어 빨간색은 빨간색을 표시합니까 ?? 녹색 텍스트가 녹색으로 표시됩니까?
Ahmad Arslan 2015

참고 :이 예는 다중이 아닙니다. 게시물에서 다시

안녕하세요, 특정 항목 선택에 대한 작업을 설정하는 방법도 보여줄 수 있습니까? 예 : 사용자가 해당 항목 중 하나를 클릭하여 앱 언어를 변경하도록하고 싶습니다 (아마도 if 문 사용).
Arda Çebi

6

팝업은 AlertDialog단지. 따라서을 생성 AlertDialog한 다음을 사용하여 원하는 뷰를 LayoutInflater팽창시키고 다음 setView()방법을 사용하여 팽창 된 뷰를 설정하면됩니다.AlertDialog


4

이 시도 :

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

나는 switch (font [which])가 그것을하고 있다고 생각한다.

3

대체 옵션

이것은 제 첫 게시물이므로 제 코드를 공유하게되어 기쁩니다! 이것은 나를 위해 일했습니다.

이 두 줄을 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();

1
네, 많이 개선되었습니다. 스위치 문은 더 향상
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.