Yes, you can show custom toast.
All you need to do is: create custom xml for toast.
Something like:
my_toast.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/mylayout"
android:orientation="horizontal"
android:background="@android:color/cyan">
<ImageView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:src="@drawable/my_img"
android:id="@+id/imageview">
</ImageView>
<TextView
android:textAppearance="?android:attr/textAppearanceLarge"
android:id="@+id/textView1" android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:text="My message"
android:textColor="@android:color/black">
</TextView>
</LinearLayout>
Now, in your activity, instead of default Toast, inflate this custom xml.
LayoutInflater inflater = getLayoutInflater();
View view = inflater.inflate(R.layout.my_toast,
(ViewGroup) findViewById(R.id.mylayout));
Toast custToast = new Toast(this);
custToast.setView(view);
custToast.show();
Hope it helps.