タブレット用プログラムの書き止め

android OS & iPadOS の記録。

【kotlin】 Toastをカスタマイズする

2024-04-03 13:26:40 | Android studio 日記

Toast の文字の大きさを大きくしたい。
という思いから調べたところ、純正からはそのような記事は見つからなかった。

説明されている複数のサイトでカスタマイズする方法が分かりました。
ですが、自分のプログラムに組み込むには問題があり例外が発生してしまう。

複数の方法を組み合わせて自分のものに使えるように調整した。

【参考】
 ※【Android Studio】Toast に画像・テキストを追加するカスタマイズ方法
  https#//codeforfun.jp/android-studio-how-to-customize-toast/

 ※ [Android] Toast をカスタマイズする
  https#//akira-watson.com/android/toast-custom.html

 

【注意】
ViewModel でViewの参照の値を保存することはメモリリークの原因になります。
メソッド内で参照を作成した場合はメソッドが終了すると参照をシステムが切ってくれます。多分^^;

 

アプリケーションの Context が求められれば、ViewModelのメソッド内でViewが作成できる。
そのViewをToastに設定して表示する。

Viewの構成は、custom_toast.xmlに記載しておく。

※ toast.setView(view) は、非推奨になりました。最新のOSでは、いずれ使用できなくなります。

 

【MainViewModel.kt】

class MainViewModel(app:Application): AndroidViewModel(app) {

    fun toastMake(text:String) {
        val view: View = LayoutInflater.from(getContext())
            .inflate(
                R.layout.custom_toast,
                null
            )

        view.findViewById(R.id.toast_message).text = text

        val toast: Toast =
            Toast.makeText(
                view.context,
                "",
                Toast.LENGTH_LONG
            )
        toast.setGravity(
            Gravity.CENTER,
            0,
            200
        )
        toast.setView(view)  // 非推奨
        toast.show()
    }
}

 

【custom_toast.xml】 res/layout に作成。


< RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/relative_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    < TextView
        android:id="@+id/toast_message"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="10dp"
        android:background="@drawable/message_frame"
        android:textColor="@color/background_color"
        android:textStyle="bold"
        android:textSize="24sp"
        />
< /RelativeLayout>


android:background="@drawable/message_frame"
枠の設計を別にしています。
色や形状をカスタマイズ。説明は省略。

 

この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« SFC互換機 Book-offブランド ... | トップ | 【kotlin】 非同期処理(Recy... »

Android studio 日記」カテゴリの最新記事