오늘 수업 때 배운 커스텀 토스트 메세지에 대해 포스팅하겠습니다.

안드로이드에서 토스트 메세지를 띄우는 것은 매우 간단합니다. 

Toast.makeText(getApplicationContext(), "띄울 내용", Toast.LENGTH_LONG).show();

이 한줄이라면, 단순한 디자인의 토스트 메세지가 나타납니다.

이제, 이 토스트 메세지를 커스텀하게 바꿔서 띄우도록 하는 방법을 알아보겠습니다. 

우선, XML 파일을 작성합니다. 



다음과 같이, 버튼을 클릭하면 토스트 메세지가 나타나도록 구현했습니다. 

위 XML은 LinearLayout에 Button 하나만 띄운 것입니다. 

소스는 아래와 같습니다.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:id="@+id/LinearLayout1"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:gravity="center_horizontal"

    android:orientation="vertical"

    android:paddingBottom="@dimen/activity_vertical_margin"

    android:paddingLeft="@dimen/activity_horizontal_margin"

    android:paddingRight="@dimen/activity_horizontal_margin"

    android:paddingTop="@dimen/activity_vertical_margin"

    tools:context="com.toastex.MainActivity" >


    <Button

        android:id="@+id/button1"

        android:onClick="toastView"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="Button" />


</LinearLayout>


그리고, 커스텀한 토스트 메세지를 작성해보겠습니다.


 

저는 위 그림과 같이 핑크색 박스엔 텍스트 메세지

그리고 밑에 작은 이미지를 포함한 메세지를 띄워보았습니다. 

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:id="@+id/toast_layout"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:gravity="center"

    android:orientation="vertical" >


    <TextView

        android:id="@+id/text"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:padding="20dp"

        android:background="@drawable/toast" />


    <ImageView

        android:id="@+id/imageView1"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:src="@drawable/ic_launcher" />


</LinearLayout>

이 부분에서 중요한 것은, 전체 레이아웃의 아이디 값과 

텍스트뷰의 아이디 그리고 배경에 적용한 @drawable/toast 부분입니다.

배경 부분은 커스텀한 텍스트 메세지 박스를 만들어주어 적용하는 것입니다. 


그럼, res/drawable/ 에 저장된 toast.xml 파일을 확인해볼까요?

<?xml version="1.0" encoding="utf-8"?>

<shape xmlns:android="http://schemas.android.com/apk/res/android"

    android:shape="rectangle" >


    <stroke

        android:width="4dp"

        android:color="#47a59b" />


    <solid android:color="#ffaeaf" />


    <padding

        android:bottom="20dp"

        android:left="20dp"

        android:right="20dp"

        android:top="20dp" />


    <corners android:radius="15dp" />


</shape>

<shape /> 를 지정해 커스텀한 메세지 박스를 만듭니다 

우선, shape를 rectangle로 설정한 것으로 보아 직사각형 모양인 박스를 만드는 것을 알 수 있습니다. 

그리고 stroke는 테두리 선에 해당하며, solid는 박스의 배경색에 해당합니다. 

corners를 적용해 테두리를 둥글게 처리하였습니다. 


자, 이제 이 커스텀한 메세지를 띄워줄 코드로 가볼까요?

public class MainActivity extends ActionBarActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

}

public void toastView(View v){

LayoutInflater inflater = getLayoutInflater(); 

// 레이아웃 인플레이터 객체 참조

// LayoutInflater 객체를 이용해 XML로 정의된 레이아웃을 메모리상에 객체화  

// 토스트를 위한 레이아웃 인플레이션

View layout = inflater.inflate(R.layout.toastborder, 

(ViewGroup)findViewById(R.id.toast_layout));

TextView tx = (TextView)layout.findViewById(R.id.text);

Toast toast = new Toast(getApplicationContext()); // 토스트 객체 생성

tx.setText("Hello World");

toast.setGravity(Gravity.CENTER, 0, 0);

toast.setDuration(Toast.LENGTH_SHORT);

toast.setView(layout); // 토스트가 보이는 뷰 설정

toast.show(); // 토스트 메세지 보여줘!

Toast.makeText(getApplicationContext(), "띄울 내용", Toast.LENGTH_LONG).show();

}

}


주석을 참조하시면, 어떻게 토스트 메세지를 띄우는지 쉽게 파악하실 수 있을 것입니다. 

그럼 결과 화면을 보면




위 회색 버튼을 클릭하면, 핑크색 메세지박스와 갤러리 아이콘 이미지가 

토스트 메세지로 띄워집니다!


이상, 구구절절한 Custom Toast Message 포스팅을 마치도록 하겠습니다

많은 도움이 되시길 바랍니다! HAAA

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기