Android custom toast mesajı oluşturma

Bazen sadece bir yazı ile oluşturulan toast mesajları yetersiz kalır. Bu yüzden toast mesajını tasarlamak isteyebiliriz. Şartlara göre farklı görünümler kazansın isteyebiliriz. Bu yazıda custom(özelleşmiş) toast mesajı yapmayı göreceğiz. Daha iyi anlamanın en iyi yolu bir uygulama yapmaktan geçiyor. Yapacağımız uygulamada 4 tane button ile 4 farklı toast mesajı göstereceğiz. Bu mesajlarda uygulamalarda ve web sayfalarında sıklıkla kullanılan hata, uyarı, bilgi ve başarılı mesajlarını göstereceğiz. Bu mesajları aşağıda ki şekilde görüldüğü gibi bir tane resim ve yanında mesaj şeklinde tasarlayacağız.

1. Mesajlarda kullanacağımız iconlar için bulduğumuz png resimleri res/drawable/ dizinine kopyalıyoruz. (danger.png, warning.png, info.png, success.png)

2. res/layout/ dizininde activity_main.xml dosyamızı oluşturuyoruz. Bu dosyada butonlarımızı yerleştireceğiz. Detaylar için kod bloğunu inceleyebilirsiniz. 

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center_horizontal"
    android:orientation="vertical"
    tools:context="com.sdahmet.customtoast.MainActivity">

    <Button
        android:id="@+id/button_danger"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="5dp"
        android:layout_marginTop="5dp"
        android:background="#e13737"
        android:text="Hata Mesajı Göster"
        android:textColor="#fff" />

    <Button
        android:id="@+id/button_warning"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="5dp"
        android:background="#ecb206"
        android:text="Uyarı Mesajı Göster"
        android:textColor="#fff" />

    <Button
        android:id="@+id/button_info"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="5dp"
        android:background="#37a6e6"
        android:text="Bilgi Mesajı Göster"
        android:textColor="#fff" />

    <Button
        android:id="@+id/button_success"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#3eba33"
        android:text="Başarı Mesajı Göster"
        android:textColor="#fff" />

</LinearLayout>

Ekran görüntüsü

3. res/layout/ dizininde danger_custom_toast.xml dosyamızı oluşturuyoruz. Burada bir LinearLayout içerisine, icon için bir ImageView ve mesajımızı göstermek için bir TextView nesnesi ekliyoruz. Bu dosya ile toast mesajımızın görünümünü oluşturuyoruz. 

danger_custom_toast.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:background="@drawable/ct_danger_bg"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        app:srcCompat="@drawable/danger" />

    <TextView
        android:textColor="#fff"
        android:padding="5dp"
        android:layout_gravity="center_vertical"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="Custom Toast-Hata Mesajı" />
</LinearLayout>
Aynı zamanda bu dosyanın yanında aynı şekilde warning_custom_toast.xmlinfo_custom_toast.xml ve success_custom_toast.xml dosyalarını oluşturuyoruz. 

4. Dikkat ederseniz yukarıdaki kod bloğunda LinearLayout un background özelliğine @drawable/ct_danger_bg şeklinde bir tanımlama yaptık. Bu dosya ile biz toast mesajımızın arka plan detaylarını oluşturduk. res/drawable/ dizininde ct_danger_bg.xml dosyamızı oluşturuyoruz. 

ct_danger_bg.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">

    <stroke
        android:width="2dp"
        android:color="#e13737" />
    <corners android:radius="5dp" />
    <padding
        android:bottom="7dp"
        android:left="7dp"
        android:right="7dp"
        android:top="7dp" />
    <solid android:color="#e76161" />

</shape>
Aynı zamanda bu dosyanın yanında aynı şekilde ct_warning_bg.xmlct_info_bg.xml ve ct_success_bg.xml dosyalarını oluşturuyoruz. 

5. Şimdi asıl işi yapan kısım olan java dosyamızı oluşturuyoruz. 

MainActivity.java

package com.sdahmet.ctoast;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    Button btnDanger, btnWarning, btnInfo, btnSuccess;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btnDanger = (Button) findViewById(R.id.button_danger);
        btnWarning = (Button) findViewById(R.id.button_warning);
        btnInfo = (Button) findViewById(R.id.button_info);
        btnSuccess = (Button) findViewById(R.id.button_success);

        btnDanger.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                showDangerToast();
            }
        });

        btnWarning.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                showWarningToast();
            }
        });

        btnInfo.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                showInfoToast();
            }
        });

        btnSuccess.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                showSuccessToast();
            }
        });
    }

    public void showDangerToast() {
        LayoutInflater inflater = getLayoutInflater();
        View view = inflater.inflate(R.layout.danger_custom_toast, null);
        Toast toast = new Toast(this);
        toast.setView(view);
        toast.setDuration(Toast.LENGTH_LONG);
        toast.setGravity(Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, 0);
        toast.show();
    }

    public void showWarningToast() {
        LayoutInflater inflater = getLayoutInflater();
        View view = inflater.inflate(R.layout.warning_custom_toast, null);
        Toast toast = new Toast(this);
        toast.setView(view);
        toast.setDuration(Toast.LENGTH_LONG);
        toast.setGravity(Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, 0);
        toast.show();
    }

    public void showInfoToast() {
        LayoutInflater inflater = getLayoutInflater();
        View view = inflater.inflate(R.layout.info_custom_toast, null);
        Toast toast = new Toast(this);
        toast.setView(view);
        toast.setDuration(Toast.LENGTH_LONG);
        toast.setGravity(Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, 0);
        toast.show();
    }

    public void showSuccessToast() {
        LayoutInflater inflater = getLayoutInflater();
        View view = inflater.inflate(R.layout.success_custom_toast, null);
        Toast toast = new Toast(this);
        toast.setView(view);
        toast.setDuration(Toast.LENGTH_LONG);
        toast.setGravity(Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, 0);
        toast.show();
    }
}

Burada öncelikle Button sınıfından değişkenler üretip, onları activity_main.xml dosyasında oluşturduğumuz butonlarla bağlıyoruz. Daha sonra bu butonların tıklanma olaylarında showDangerToast(), showWarningToast(), showInfoToast() ve showSuccessToast() fonksiyonlarını sırasıyla çağırıyoruz.

public void showDangerToast() {
    LayoutInflater inflater = getLayoutInflater();
    View view = inflater.inflate(R.layout.danger_custom_toast, null);
    Toast toast = new Toast(this);
    toast.setView(view);
    toast.setDuration(Toast.LENGTH_LONG);
    toast.setGravity(Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, 0);
    toast.show();
}

Bu fonksiyonlarda toast mesajlarımızı oluşturup ekranda gösteriyoruz.

Sonuç ekran görüntüsü

        

        

 

ETİKETLER
androidcustom toast messageözel toast mesajtoast messageandroid toast messageandroid custom toast message
Öncekİ Yazı

Android toast mesajı oluşturma

Sonrakİ Yazı

Android alert dialog kullanımı

İlgili Yazılar