Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Android

Làm sao để hiển thị Toast lâu hơn Toast.LENGTH_LONG trong Android?

Vấn đề

Toast.LENGTH_LONG chỉ hiển thị ~3.5 giây. Đôi khi cần hiển thị lâu hơn (ví dụ 10 giây, 50 giây).

Giải pháp: Dùng Handler để tự hủy Toast sau thời gian tùy chỉnh

Bước 1: Tạo project

Bước 2: Layout activity_main.xml

<LinearLayout ... android:orientation="vertical" android:gravity="center" ...>
    <TextView android:id="@+id/text" ... android:text="click to show toast at top" />
</LinearLayout>

Bước 3: MainActivity.java

public class MainActivity extends AppCompatActivity {
    TextView text;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        text = findViewById(R.id.text);
        text.setOnClickListener(v -> {
            final Toast toast = Toast.makeText(MainActivity.this, "Sample Toast", Toast.LENGTH_LONG);
            toast.setGravity(Gravity.TOP, 0, 250);
            toast.show();

            // Hủy toast sau 50 giây (50000ms)
            new Handler().postDelayed(() -> toast.cancel(), 50000);
        });
    }
}

Giải thích:

  • Tạo Toast bình thường với LENGTH_LONG.
  • Dùng Handler.postDelayed() để gọi toast.cancel() sau thời gian mong muốn (ms).
  • Ví dụ trên set 50000ms = 50 giây. Đổi giá trị này tùy nhu cầu.

Kết quả

Màn hình ban đầu:

Làm sao để hiển thị Toast lâu hơn Toast.LENGTH_LONG trong Android?

Khi click TextView, Toast xuất hiện ở trên cùng và hiển thị 50 giây:

Làm sao để hiển thị Toast lâu hơn Toast.LENGTH_LONG trong Android?

Lưu ý

Cách này hoạt động nhưng không khuyến khích cho UX tốt. Nên dùng Snackbar, Dialog hoặc custom View cho thông báo lâu dài.