본문 바로가기

Development/Android Studio

(Android Studio) Chapter8. Dialog pop-up

1. Dialog

  1) 기능

    - 버튼을 누르면 질문이 팝업창으로 뜨고 답변을 적으면 팝업창이 꺼지면서 할당된 부분에 사용자가 적은 답변이 바뀜

  2) 빌드 예시

    - xml(버튼, 텍스트뷰 레이아웃 설정)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/btn_dialog"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="다이얼로그"/>

    <TextView
        android:id="@+id/tv_result"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="40sp"
        android:text="테스트"/>

</LinearLayout>

    - java(팝업구현=아이콘+타이틀+텍스트+작성+확인 및 취소)

package com.example.dialogeample;

import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;

import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    Button btn_dialog;
    TextView tv_result;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

    btn_dialog = (Button)findViewById(R.id.btn_dialog);
    tv_result = (TextView) findViewById(R.id.tv_result);

    btn_dialog.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) { // 클릭하면 다이얼로그 팝업 클래스 인스턴스화
            AlertDialog.Builder ad = new AlertDialog.Builder(MainActivity.this); // java.lang의 하위 클래스
            ad.setIcon(R.mipmap.ic_launcher);  //아이콘 이미지
            ad.setTitle("제목");                // 제목
            ad.setMessage("Loquens");          // 메시지

            final EditText et = new EditText(MainActivity.this);
            ad.setView(et);                     // 작성부분 구현
            //버튼 기능 추가
            ad.setPositiveButton("확인", new DialogInterface.OnClickListener() {
                @Override                       // 온클릭 오버라이드(팝업의 이벤트결과로 확인을 누르면 어떤 결과를 가져올 것인가)
                public void onClick(DialogInterface dialog, int which) {
                    //edittext에서 값을 받아와서 출력
                    String result = et.getText().toString();  // 텍스트를 가져온다
                    tv_result.setText(result);
                    dialog.dismiss();                         // 다이얼로그 종료
                }
            });

            ad.setNegativeButton("취소", new DialogInterface.OnClickListener() {
                @Override                       // 온클릭 오버라이드(팝업 이벤트 결과로 취소를 누르면 어떤 결과를 가져올 것인가)
                public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss();           // 변화 없이 종료
                }
            });
            ad.show();                           // 필수, 보여줘라.

        }
    });



    }
}

    - 결과

 

  3) 확인할 사항

    - 팝업창도 레이아웃에 포함되어야할 것으로 예상했지만 딱히 레이아웃이 포함되지 않고 기본 제공되는 형태를 그대로 사용함

    - 그렇다면 팝업창도 내 마음대로 크기나 형태를 자유롭게 수정할 수 있는지 확인 필요