(물론 여기저기의 글들을 참조하고 많은 뻘짓을 하고나서야 만들었다.)
다이얼로그는 그본적으로 4가지 구성요소로 되어있다.
다이얼 로그 구성요소 |
Title : 다이얼로그의 제목부분에 들어가는 String
Message : 다이얼로그의 내용에 해당하는 String
PositiveButton : OK button
NegativeButton : Cancel button |
AlertDialog
기본적인 알럿다이얼로그를 이용해 다이얼로그를 만들면 이렇게 나온다.
CustomDialog
만들려는 커스텀다이얼로그의 기본적인 모양은 이렇다.
테두리와 배경을 넣어준것 뿐이다.
하지만 이걸 하기 위해선 몇가지 작업을 더 해주어야 한다.
- CustomDialog는 만드는 것이기때문에 Builder 클래스를 만들어야한다.
- LayoutInflater를 통해 다이얼로그의 레이아웃을 잡아주어야한다.
- CustomDialog를 만들수 있게 해주는 클래스를 만들어야 한다.
(extends Dialog)
- 호출하려는 activity에서
액티비티이름.this.showDialog(다이얼로그아이디); 로 호출해서 사용한다.
액티비티이름.this.showDialog(다이얼로그아이디); 로 호출해서 사용한다.
- Dialog를 호출할 activity에서 onCreateDialog()를 override해서 만든다.
( showDialog로 다이얼로그를 호출하면 자동으로 실행된다.)
- 어쨋든 AlertDialog와 같은 기능을 할 수 있게 똑같이 만들면 된다.
골자는 이 세가지를 구현하는 것이다.
- AlertDialog는 클래스 안에 Builder 클래스가 존재, 셋팅과 생성을 도와준다.
- AlertDialog는 Builder 클래스에 set....메소드들이 구현되어있다.
- create메소드가 구현되어있다.
Builder 클래스
public static class Builder { }
- 빌더클래스는 static으로 선언된 클래스이다.
- static으로 선언된 클래스는 그 안의 메소드들에 대한 접근이 가능하다.
빌더 클래스에 필요한 멤버변수들
- context
- title
- message
- positiveButtonText
- negativeButtonText
- contentView
- DialogInterface.OnClickListener
- 생성자 : Builder(Context context) { }
- setTitle
- setMessage
- setPositiveButton
- setNegativeButton
- setContentView
빌더클래스에 필요한 create() 메소드
values/themes.xml
values/styles.xml
layout/dialog.xml
필요한 그림파일들
이런 처리를 거쳐 이미지가 들어간 커스텀 다이얼로그를 만들어보았다.
스크롤 테스트를 하며 만들었던코드에 추가적으로 각 건물 클릭시 해당 건물에 맞는 정보와 이미지를 출력해 주는 커스텀 다이얼로그이다. 사실 이걸 하려고 커스텀 다이얼로그와 스크롤도 공부한 것. |
|
예제 파일
연계 된 글