안드로이드

안드로이드 Toast custom 커스텀 토스트메시지 만들기!

알통몬_ 2018. 3. 29. 11:31
반응형


공감 및 댓글은 포스팅 하는데

 아주아주 큰 힘이 됩니다!!

포스팅 내용이 찾아주신 분들께 

도움이 되길 바라며

더 깔끔하고 좋은 포스팅을 

만들어 나가겠습니다^^

 


이번 포스팅에서는 안드로이드의 Toast message를 custom하는

방법에 대해서 공부합니다.


1. 일반적인 Toast 토스트 메시지 사용

우리는 일반적으로 아래 코드처럼 Toast 메시지를 사용합니다.

1
2
3
4
5
Context context = getApplicationContext();
 CharSequence txt = "메시지입니다.";
int time = Toast.LENGTH_SHORT; // or Toast.LENGTH_LONG
Toast.makeText(context, txt, time).show();
 
cs

그리고 그 메시지는 디바이스 화면의 중앙 하단에 표시됩니다.


2. Toast 위치 변경하기

토스트 메시지의 위치를 변경할 수 있습니다.

바로 Toast의 setGravity 함수를 이용하면요.

1
2
3
4
5
6
Context context = getApplicationContext();
CharSequence txt = "메시지입니다.";
 int time = Toast.LENGTH_SHORT; // or Toast.LENGTH_LONG
 Toast toast = Toast.makeText(context, txt, time);
toast.setGravity(Gravity.CENTER|Gravity.START, 00);
toast.show();
 
cs

1번과 바뀐 부분이 보이시나요?

위치속성은

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Gravity.TOP  
Gravity.BOTTOM
Gravity. LEFT
Gravity. RIGHT 
Gravity.CENTER_VERTICAL
Gravity.FILL_VERTICAL
Gravity. CENTER_HORIZONTAL
Gravity. FILL_HORIZONTAL
Gravity.CENTER 
Gravity.FILL
Gravity.CLIP_VERTICAL
Gravity.CLIP_HORIZONTAL
Gravity.START
Gravity.END
 
cs

등이 있습니다 ㅎㅎ 많네요.

https://developer.android.com/reference/android/view/Gravity.html

위 공식문서에서 더 자세히 확인하실 수 있습니다.


---------------------------------------------------------------------------------------------------------


---------------------------------------------------------------------------------------------------------




3. Custom View 적용하기

마지막으로 기본 View 는 반투명한 회색 배경에 흰 글씨인데요.

이 View도 커스텀해서 적용할 수 있습니다.

우선 코드는 아래와 같습니다.

1
2
3
4
5
6
7
8
9
10
11
12
Context context = getApplicationContext();
CharSequence txt = "메시지입니다.";
int time = Toast.LENGTH_SHORT; // or Toast.LENGTH_LONG
Toast toast = Toast.makeText(context, txt, time);
LayoutInflater inflater = getLayoutInflater();
View view = 
         inflater.inflate(R.layout.custom_toastview,
 (ViewGroup)findViewById(R.id.containers));
TextView txtView = view.findViewById(R.id.txtview);
txtView.setText(txt);
toast.setView(view);
toast.show();
 
cs


R.layout.custom_toastview 는 토스트 메세지의 레이아웃입니다.

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/containers">
<TextView
android:id="@+id/txtview"
android:layout_width="match_parent"
android:layout_height="120dp"
android:textSize="40sp"
android:textStyle="bold"
android:textColor="@color/black"
android:gravity="center"
android:background="@color/colorAccent"/>
</android.support.constraint.ConstraintLayout>

그리고 R.id.containers 는 위 레이아웃에서 부모 레이아웃의 id 입니다.


별로 어렵지 않죠?

이상입니다.

감사합니다.



반응형