Glacier's Daily Log

Android) Snackbar 스낵바 메세지 사용해보기 - Toast 의 업그레이드 버전 본문

Coding/Android

Android) Snackbar 스낵바 메세지 사용해보기 - Toast 의 업그레이드 버전

h__glacier_ 2020. 5. 18. 11:13
반응형

안드로이드 앱 개발 중, Toast 메세지는 거의 필연적으로 쓰인다.

개발 중, 소스코드가 제대로 작동하는지, 어디서 오류가 나는지

컴파일 용도로 쓰이기도 하고,

사용자들에게 어플이 작동하고 있다는 피드백으로 사용하기도 한다.

실제로 시중에 출시된 어플들을 사용해보면 토스트 메세지를 사용하는 어플들이 굉장히 많다.


오늘은, Toast 메세지의 업그레이드 버전인 'Snackbar' 스낵바 메세지를 사용하는 법을 알아보자.

 

스낵바 메세지는 안드로이드 머터리얼 디자인에 조금 더 가까운 모습을 하고 있다.

 

우선 내가 지금 개발중인 어플에 적용한

스낵바 메세지를 보여주도록 하겠다.

Android Snackbar

이렇게, 하단에 바 형태로 띄워진다.

 

그러면 어떻게 구현하는지 알아보자.

 implementation 'com.android.support:design:28.0.0'

우선, 안드로이드 서포트 디자인을 implementation 한다.

gradle의 app수준에 추가하면 된다.

 

이렇게 간단히 구현할 수 있다.

나는 edittext에 포커스가 가면 스낵바를 띄우도록 구현했기 때문에

onFocusChange 구문을 사용했다.

 

일반적으로는 onClickListener를 사용하면 될 것이다.

 editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                Snackbar.make(v, "하고싶은말.", Snackbar.LENGTH_INDEFINITE)

                        .setAction("Yes",null)
                        .show();
            }
        });

뒤에 Snackbar.LENGTH_INDEFINITE 부분을 조절하면

길게 표시할지, 짧게 표시할지, 사라지지 않게 할지 결정 할 수 있다.

 

하지만 스낵바의 토스트보다 좋은점은 따로 있다.

사용자의 피드백을 받을 수 있다는 것이다.

 

Yes 버튼을 추가한 스낵바

이렇게 YES 버튼을 눌러야 사라지게 할 수 있는 것이다.

 

또는 다른 버튼을 구현해서, 어떤 기능을 추가 할 수 도 있다.

 

이렇게, setAction 안에 onClickListener 를 또 집어 넣어서

구현 할 수 있다.

 

 editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                Snackbar.make(v, "하고싶은말.", Snackbar.LENGTH_INDEFINITE)
                        .setActionTextColor(Color.parseColor("#FF0000"))
                        .setAction("Yes",new View.OnClickListener()
                        {
                            @Override
                            public void onClick(View v)
                            {

                            }
                        }).show();
            }

        });

이렇게, 토스트 메세지처럼 간단하게 구현할 수 있고

디자인도 깔끔해서 사용하기 좋은 것 같다.


내 포스팅으로 개발에 많은 도움이 되었으면 한다.

반응형
Comments