先日、ポップアップアラームという設定した時刻にポップアップを表示するアプリを作りました。このページではその中でもポップアップであるToastをカスタマイズして表示する処理について紹介します。
標準のToastを表示する
標準のToastは以下のコードで表示できます。
object ToastView {
fun showToast(context: Context, message: String) {
Toast.makeText(context, message, Toast.LENGTH_LONG).show()
}
}
Toastをカスタマイズする
前述のような標準のToastだと目立たず、通知を見逃しやすいので、上の画像のようにToastのサイズやフォントサイズが大きい独自のレイアウトを作成します。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:weightSum="1">
<TextView
android:id="@+id/message"
android:layout_width="320dp"
android:layout_height="80dp"
android:background="@drawable/toast_shape"
android:gravity="center"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:textColor="@color/colorBase"
android:textSize="40sp" />
</LinearLayout>
上記の独自レイアウトを表示します。
object ToastView {
fun showToast(context: Context, message: String) {
val inflate = context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
val view = inflate.inflate(R.layout.toast, null)
val textView = view.findViewById(R.id.message) as TextView
textView.text = text
Toast(context).run {
this.view = view
duration = Toast.LENGTH_LONG
setGravity(Gravity.BOTTOM, 0, 250)
show()
}
}
}

