Saat menggunakan setDuration () untuk Toast, apakah mungkin untuk menetapkan panjang khusus atau setidaknya sesuatu yang lebih panjang dari itu Toast.LENGTH_LONG
?
android
android-toast
Hussein El Feky
sumber
sumber
toast
tag? Itu terlihat relevan dengan pertanyaan ..toast
tag untuk. Saya pikir tag ada di sana untuk membantu pencarian dan penyortiran dantoast
jelas merupakan pencarian umum.android
dantoast
tampak sempurna.Jawaban:
Nilai-nilai dari
LENGTH_SHORT
danLENGTH_LONG
0 dan 1. Ini berarti mereka diperlakukan sebagai flag daripada durasi yang sebenarnya jadi saya tidak berpikir akan mungkin untuk mengatur durasi untuk apa pun selain nilai-nilai ini.Jika Anda ingin menampilkan pesan lebih lama kepada pengguna, pertimbangkan Pemberitahuan Status Bar . Pemberitahuan Status Bar dapat dibatalkan secara program ketika tidak lagi relevan.
sumber
Jika Anda menggali lebih dalam pada kode android, Anda dapat menemukan baris yang menunjukkan dengan jelas, bahwa kami tidak dapat mengubah durasi pesan Toast.
dan nilai default untuk durasi adalah
sumber
Anda mungkin ingin mencoba:
untuk menggandakan waktu. Jika Anda menentukan 3 sebagai gantinya 2 maka akan berlipat tiga waktu..etc.
sumber
Toast.cancel()
di tempat yang tepatJika Anda ingin
Toast
bertahan, saya menemukan Anda dapat meretasnya dengan melakukanTimer
panggilantoast.show()
berulang kali (setiap detik atau lebih harus dilakukan). Panggilanshow()
tidak merusak apa pun jikaToast
sudah ditampilkan, tetapi itu menyegarkan jumlah waktu tetap di layar.sumber
ViewGroup
OnTouch
acara Anda . Untuk mengoptimalkan ini, Anda mungkin harus membuat timer Anda ulangi sedekat waktu yang sebenarnyaToast
ditampilkan di layar (3,5 detik untuk lama, 2 detik untuk singkat)Saya telah mengembangkan kelas Custom Toast yang dengannya Anda dapat menunjukkan Toast untuk durasi yang diinginkan (dalam mili detik)
sumber
Saya sudah membuat kode kelas pembantu untuk melakukan ini. Anda dapat melihat kode di github: https://github.com/quiqueqs/Toast-Expander/blob/master/src/com/thirtymatches/toasted/ToastedActivity.java
Inilah cara Anda menampilkan roti panggang selama 5 detik (atau 5000 milidetik):
sumber
Saya tahu saya agak terlambat, tetapi saya mengambil jawaban Regis_AG dan membungkusnya dalam kelas pembantu dan itu bekerja dengan baik.
Dalam kode aplikasi Anda, lakukan saja hal seperti ini:
sumber
Saya tahu jawabannya sudah agak terlambat .. Saya memiliki masalah yang sama dan memutuskan untuk mengimplementasikan versi saya sendiri Toast Bare tulang, setelah melihat ke kode sumber android untuk roti panggang.
Pada dasarnya Anda perlu membuat manajer Window baru, dan menunjukkan dan menyembunyikan jendela untuk durasi durasi yang diinginkan menggunakan penangan
Setelah inisialisasi tata letak, Anda dapat menggunakan metode sembunyikan dan tunjukkan
Sekarang yang Anda butuhkan adalah menambahkan dua utas runnable yang memanggil handleShow () dan handleHide () yang dapat Anda poskan ke Handler.
dan bagian terakhir
Ini adalah implementasi yang cepat dan kotor .. Belum mempertimbangkan kinerja apa pun.
sumber
Tampilan roti panggang LONG_DELAY selama 3,5 detik dan tampilan roti panggang SHORT_DELAY selama 2 detik .
Toast secara internal menggunakan INotificationManager dan memanggil metode enqueueToast setiap kali Toast.show () dipanggil.
Panggil acara () dengan SHORT_DELAY dua kali akan memanggang roti yang sama lagi. itu akan ditampilkan selama 4 detik (2 detik + 2 detik).
demikian pula, panggil acara () dengan LONG_DELAY dua kali akan membuat roti panggang yang sama lagi. itu akan ditampilkan selama 7 detik (3,5 detik + 3,5 detik)
sumber
Berikut adalah kelas Toast khusus yang saya buat menggunakan kode di atas:
sumber
Jika Anda membutuhkan Toast yang panjang, ada alternatif praktis, tetapi mengharuskan pengguna Anda mengklik tombol OK untuk membuatnya pergi. Anda dapat menggunakan AlertDialog seperti ini:
Jika Anda memiliki pesan yang panjang, kemungkinan besar, Anda tidak tahu berapa lama yang dibutuhkan pengguna Anda untuk membaca pesan, jadi kadang-kadang ada baiknya Anda meminta pengguna untuk mengklik tombol OK untuk melanjutkan. Dalam kasus saya, saya menggunakan teknik ini ketika pengguna mengklik ikon bantuan.
sumber
Service
, di mana tidak ada UI.Seperti yang disebutkan oleh orang lain, Android Toasts dapat berupa LENGTH_LONG atau LENGTH_SHORT. Tidak ada jalan keluarnya, Anda juga tidak boleh mengikuti 'peretasan' apa pun yang diposting.
Tujuan dari Toasts adalah untuk menampilkan informasi "tidak penting" dan karena efeknya yang bertahan lama, pesan dapat ditempatkan jauh di luar konteks jika durasinya melebihi batas tertentu. Jika stock Toasts dimodifikasi sehingga mereka dapat menampilkan lebih lama dari LENGTH_LONG, pesan akan berlama-lama di layar sampai proses aplikasi diakhiri karena tampilan roti panggang ditambahkan ke WindowManager dan bukan ViewGroup di aplikasi Anda. Saya akan berasumsi inilah sebabnya ini sulit dikodekan.
Jika Anda benar-benar perlu menampilkan pesan gaya bersulang lebih dari tiga setengah detik, saya sarankan untuk membangun tampilan yang dilampirkan ke konten Aktivitas, dengan cara itu akan hilang ketika pengguna keluar dari aplikasi. Pustaka SuperToasts saya membahas masalah ini dan banyak lainnya, silakan menggunakannya! Anda kemungkinan besar akan tertarik menggunakan SuperActivityToasts
sumber
Cukup gunakan SuperToast untuk membuat roti panggang yang elegan pada situasi apa pun. Buat roti panggang Anda berwarna-warni . Edit warna font Anda dan juga ukurannya . Semoga semuanya menjadi satu untuk Anda.
sumber
Mengapa makan Toast, ketika Anda dapat memiliki seluruh Snackbar : https://developer.android.com/reference/android/support/design/widget/Snackbar.html
Snackbar> Roti panggang, Roti bakar khusus, Crouton
sumber
Berikut adalah metode yang sangat sederhana yang bekerja untuk saya:
for (int i=0; i < 3; i++) { Toast.makeText(this, "MESSAGE", Toast.LENGTH_SHORT).show(); }
Durasi LENGTH_SHORT adalah 2 detik dan LENGTH_LONG adalah 3,5 detik, Di sini pesan roti panggang akan ditampilkan selama 6 detik karena terlampir dalam loop for. Tetapi kelemahan dari metode ini adalah setelah masing-masing 2 detik efek memudar kecil mungkin timbul. tetapi tidak terlalu terlihat. Semoga bermanfaat
sumber
Pengguna tidak dapat menentukan durasi durasi Toast. karena fungsi scheduleTimeoutLocked () NotificationManagerService tidak menggunakan durasi bidang. kode sumbernya adalah sebagai berikut.
sumber
Gunakan Crouton, ini adalah perpustakaan Toast yang sangat fleksibel.
Crouton
Anda bisa menggunakannya seperti bersulang:
atau Anda bahkan bisa masuk lebih dalam dan menyesuaikannya lebih banyak, seperti mengatur waktu hingga tak terbatas! misalnya di sini saya ingin menampilkan pesan roti panggang sampai pengguna mengakuinya dengan mengkliknya.
Custome Layout yang akan dipompa untuk roti panggang.
sumber
Durasi roti panggang bisa diretas menggunakan utas yang menjalankan roti bakar secara eksklusif. Ini berfungsi (jalankan proses bersulang selama 10 detik, modifikasi waktu tidur dan ctr sesuai keinginan Anda):
sumber
Bersulang dengan latar belakang khusus dan tampilan melakukan trik untuk saya. Saya mengujinya di tablet nexus 7 dan saya perhatikan tidak ada animasi fadein fadeout selama perulangan. Inilah implementasinya:
Inilah tampilan teks khusus yang digunakan dalam kode di atas:
@ drawable / fragment_background membuat roti panggang saya memiliki sudut membulat seperti dalam versi kitkat. Anda dapat menambahkan tampilan lain juga di file. Setiap modifikasi untuk perbaikan dan komentar dianjurkan karena saya berencana untuk mengimplementasikannya di aplikasi langsung saya.
sumber
Jadwalkan hitung mundur hingga waktu di masa mendatang, dengan pemberitahuan reguler pada interval di sepanjang jalan. Contoh menampilkan hitungan mundur 30 detik dalam bidang teks:
sumber
Teks ini akan hilang dalam 5 detik.
Sunting: Seperti yang dikatakan Itai Spector dalam komentar akan ditampilkan sekitar 3,5 detik, Jadi gunakan kode ini:
sumber
Tidak, dan sebagian besar / semua peretasan yang tercantum di sini tidak lagi berfungsi di android 9. Tetapi ada solusi yang jauh lebih baik: jika Anda perlu berkeliaran, gunakan kotak dialog.
sumber
Pendekatan yang sangat sederhana untuk membuat pesan yang sedikit lebih lama adalah sebagai berikut:
Perhatikan bahwa contoh di atas menghilangkan opsi LENGTH_SHORT untuk menjaga contoh sederhana.
Anda umumnya tidak ingin menggunakan pesan Toast untuk menampilkan pesan untuk interval yang sangat lama, karena itu bukan tujuan kelas Toast yang dimaksudkan. Tetapi ada kalanya jumlah teks yang Anda butuhkan untuk ditampilkan dapat membuat pengguna lebih lama dari 3,5 detik untuk membaca, dan dalam hal itu sedikit perpanjangan waktu (misalnya, hingga 6,5 detik, seperti yang ditunjukkan di atas) dapat, IMO, bermanfaat dan konsisten dengan penggunaan yang dimaksud.
sumber
Menyetel roti panggang ke periode tertentu dalam mili detik:
sumber
sumber
Setelah gagal dengan setiap solusi yang tersedia, akhirnya saya menyelesaikannya menggunakan rekursi.
Kode:
sumber
Solusi yang sangat sederhana untuk pertanyaan itu. Dua atau tiga dari mereka akan membuat roti panggang lebih lama. Ini satu-satunya jalan keluar.
sumber
Anda dapat mengatur waktu yang diinginkan dalam milidetik dalam
Toast.makeText();
metode seperti ini:sumber