ユーザーに「OKですよ」など簡単にメッセージを表示するとユーザービリティが向上しますそんなときは、Toast を使います。
ボタンをタップするとトーストが出てくる簡単なテストアプリを作ってみましょう。
Flutter Toast はこちらです
Kotlin Toastはこちらです
以下Android StudioでJavaのケースです
2024.1.1
Toast
「トースト」はパンではありません。アメリカ映画を見ていると時々出てきます。乾杯の前に「ジョージの成功を祝って!」などと言う短い祝辞のことです
Android 11 からはToastに関して変更点があります。
Android 11 でのトーストに関する更新
- バックグラウンドからのカスタム トーストのブロック
- トーストのコールバック
- Text Toast API の変更
トーストは
1 |
import android.widget.Toast; |
をインポートして設定をするだけでできます。
1 2 3 |
Context context = getApplicationContext(); ... Toast.makeText(context , "トーストメッセージ", Toast.LENGTH_LONG).show(); |
LENGTH_LONG の代わりに SHORT にすると表示時間が短くなります
MainActivity.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
//package your.package.name; import android.os.Bundle; import androidx.activity.EdgeToEdge; import androidx.appcompat.app.AppCompatActivity; import androidx.core.graphics.Insets; import androidx.core.view.ViewCompat; import androidx.core.view.WindowInsetsCompat; import android.widget.Toast; import android.widget.Button; public class MainActivity extends AppCompatActivity { String toastMessage; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); EdgeToEdge.enable(this); setContentView(R.layout.activity_main); ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> { Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()); v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom); return insets; }); Button button = findViewById(R.id.button); toastMessage = "トースト"; // lambda式 button.setOnClickListener( v -> { Toast toast = Toast.makeText(this, toastMessage, Toast.LENGTH_LONG); toast.show(); }); } } |
レイアウトですがボタンを設定しているだけです。
activity_main.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout 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:id="@+id/main" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/button" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" /> </androidx.constraintlayout.widget.ConstraintLayout> |
リソース
strings.xml
1 2 3 4 |
<resources> <string name="app_name">YourAppName</string> <string name="button">Button</string> </resources> |
とても簡単でいいのですがもう少し、フォントを大きくしたいとか、背景を明るくしたい等、ちょっと変更したいと思ってもこのままではできません。
以前はカスタムで作ると簡単にできましたがAPI30からは非推奨になりました。
似たようなメッセージをユーザーに通知するものとしてSnackbarがあり、Androidのサンプルコードなどではよく使われています。
関連ページ:
- トースト表示
- トーストのカスタマイズ
Refferences:
Toasts | Android Developers
Toasts overview | Android Developers
Android 11 でのトーストに関する更新