先日、ポップアップアラームという設定した時刻にポップアップを表示するアプリを作りました。このページではその中でもポップアップである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() } } }