Android - Toast, 대화상자

이 글에서는 Toast, 대화상자, 그리고 Fragment에 대해 적겠다.

Toast

Toast는 앱 내에서 구름같은 메시지를 표시하는 위젯이다.

Toast - 기본형

메시지를 띄우기 위해, onCreate() 내에 다음 코드를 넣고 실행하면 "문장 출력"이란 Toast메시지가 아래쪽에 잠시 나타났다가 사라질 것이다.

Toast.makeText(getApplicationContext(), "문장 출력",Toast.LENGTH_SHORT).show();

이때 쓰이는 함수는 Toast의 maketext()이다.
maketext(Context context, CharSequence text, int duration)

Context context : context를 설정한다.
onCreate() 함수 내에서는 getApplicationContext() ,
같은 Activity내에서는 this,
Fragment에서는 getActivity() 를 지정한다.

CharSequence text : 보여줄 메시지를 설정한다. String형태로 넣어주면 된다.

int duration : 메시지를 보여줄 시간길이를 설정한다.
Toast.LENGTH_SHORT 혹은 Toast.LENGTH_LONG 을 넣을 수 있다.

아래는 개인적으로 응용한 예제이다. Listview에서 리스트 아이템을 클릭하면 "빈 테이블입니다"라는 문장이 뜨게 하는 액티비티의 일부이다.

listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override    public void onItemClick(AdapterView parent, View view, int position, long id) {
        Toast.makeText(getActivity(), "빈 테이블입니다.",Toast.LENGTH_SHORT).show();        }
    }
});


Toast의 위치지정

Toast 변수 하나를 선언하고, 위에 설명한 기본형에 위치지정(setGravity)을 추가한다.


Toast tview = Toast.makeText(getApplicationContext(), "일반 메시지 창입니다.", Toast.LENGTH_SHORT);
tview.setGravity(Gravity.LEFT | Gravity.TOP, 10, 20);
tview.show();

setGravity(int Gravity, int xOffset, int yOffset)
Gravity : Toast가 치우치게 할 방향을 결정한다. 2개까지 동시에 사용가능한데, 같이 사용할때는 | (or)기호를 넣는다.

미리 정의된 방향상수: Gravity.LEFT, Gravity.TOP, Gravity.BOTTOM, Gravity.RIGHT

xOffset, yOffset : Gravity기준으로 추가적으로 이동할 x,y 좌표를 설정한다.


Toast에 사용자정의 레이아웃을 사용하는 방법

1. 먼저 Toast용으로 쓸 layout을 만들어놓는다. 기존 레이아웃처럼 하면 된다.

2. 사용자정의 레이아웃을 Toast에 연결하기 위해 아래처럼 코드들 입력한다.


View view = getLayoutInflater().inflate(R.layout.toastlay,null);
TextView tv = (TextView) view.findViewById(R.id.toasttext);
tv.setText("레이아웃으로 만든 토스트이다.");
Toast tview = new Toast(this);
tview.setDuration(Toast.LENGTH_SHORT);
tview.setGravity(Gravity.CENTER, 0, 100);
tview.setView(view);
tview.show();


3. 실행해서 자신이 지정한 레이아웃 모양대로 나오는지 확인해본다.

대화상자

대화상자는 팝업형태로 나타나 정보를 받거나, 메시지를 표시하는 위젯이다.

대화상자 - 기본형



기본형은 간단한 형태의 대화상자를 표시한다.
.setNegativeButton .setPositiveButton null 부분에는 
OnClickListener를 별도로 지정할 수 있다.


AlertDialog.Builder dlg = new AlertDialog.Builder(this);
dlg.setTitle("기본대화상자")
        .setIcon(R.mipmap.ic_launcher)
        .setMessage("기본 대화상자다.")
        .setNegativeButton("닫기", null)
        .setPositiveButton("확인", null).show();

대화상자 - 사용자정의

기본형에 사용자 레이아웃을 적용한다. 

View view = View.inflate(this, R.layout.layoutio, null);
AlertDialog.Builder dlg = new AlertDialog.Builder(this);
final EditText txt = (EditText) view.findViewById(R.id.editText3);
dlg.setTitle("메뉴를 입력해라.")
        .setView(view)
        .setIcon(R.mipmap.ic_launcher)
        .setNegativeButton("닫기", null)
        .setPositiveButton("확인", null).show();

댓글

이 블로그의 인기 게시물

HW #2 - 학점 계산 / 레스토랑 예약 activity

HW #10 - My Canvas(단순한 그림판)

Windows에서 안드로이드 어플리케이션 개발환경 구축 (Android Studio) - 2. Android Studio 설치