Saya memiliki Kegiatan bernama whereActity
yang memiliki dialog anak juga. Sekarang, saya ingin menampilkan aktivitas ini sebagai dialog untuk aktivitas lain.
Bagaimana saya bisa melakukan itu?
Saya memiliki Kegiatan bernama whereActity
yang memiliki dialog anak juga. Sekarang, saya ingin menampilkan aktivitas ini sebagai dialog untuk aktivitas lain.
Bagaimana saya bisa melakukan itu?
Jawaban:
Untuk memulai aktivitas sebagai dialog, saya mendefinisikannya seperti ini di
AndroidManifest.xml
:Gunakan properti ini di dalam
activity
tag Anda untuk menghindari agar Dialog Anda muncul di daftar aplikasi yang baru saja digunakanJika Anda ingin menghentikan dialog / aktivitas Anda dari kehancuran ketika pengguna mengklik di luar dialog:
Setelah
setContentView()
AndaActivity
gunakan:this.setFinishOnTouchOutside(false);
Sekarang ketika saya menyebutnya
startActivity()
menampilkan sebagai dialog, dengan aktivitas sebelumnya ditampilkan ketika pengguna menekan tombol kembali.Perhatikan bahwa jika Anda menggunakan
ActionBarActivity
(atau tema AppCompat), Anda harus menggunakannya@style/Theme.AppCompat.Dialog
.sumber
@style/Theme.AppCompat.Dialog
this.setFinishOnTouchOutside(false);
setelahsetContentView()
untuk mencegah aktivitas dihancurkan ketika Anda mengklik di luar dialog yang Anda buat.Gunakan kode ini sehingga aktivitas dialog tidak akan ditutup ketika pengguna menyentuh di luar kotak dialog:
membutuhkan API level 11
sumber
Anda dapat mendefinisikan gaya ini dalam values / styles.xml untuk melakukan Splash yang lebih lama:
Dan gunakan itu AndroidManifest.xml:
sumber
@drawable/trans
: Anda harus dapat menggunakan@android:color/transparent
yang akan membuatColorDrawable
untuk digunakan sebagai latar belakang.<item name="windowNoTitle">true</item>
(tidak ada "android"). Lihat di sini . Tidak yakin tentang barang-barang lainnya.1 - Anda dapat menggunakan aktivitas yang sama dengan dialog dan layar penuh, secara dinamis:
Panggil
setTheme(android.R.style.Theme_Dialog)
sebelum meneleponsetContentView(...)
dansuper.oncreate()
dalam Aktivitas Anda.2 - Jika Anda tidak berencana mengubah gaya tema aktivitas yang dapat Anda gunakan
(seperti yang disebutkan oleh @faisal khan)
sumber
<activity android:theme="@android:style/Theme.Dialog" />
) dan setel program secara terprogram untuk dialog atau aktivitas di onCreate stackoverflow.com/a/35915764/2898715Jika Anda membutuhkan Versi Appcompat
style.xml
yourmanifest.xml
sumber
<item name="windowNoTitle">true</item>
untuk membuatnya bekerja untuk saya. Saya juga menambahkan<item name="android:windowActionBar">false</item>
untuk ukuran yang baik.<item name="android:windowNoTitle">true</item>
tidak bekerja (Android 5.0.1), dan saya harus mengubah ke<item name="windowNoTitle">true</item>
Jika aktivitas Anda diterjemahkan sebagai dialog, cukup tambahkan tombol ke xml aktivitas Anda,
Kemudian lampirkan pendengar klik dalam kode Java Activity Anda. Di pendengar, cukup panggil
finish()
Itu akan mengabaikan dialog Anda, mengembalikan Anda ke aktivitas menelepon.
sumber
Jika Anda ingin menghapus tajuk aktivitas & memberikan tampilan khusus untuk dialog, tambahkan berikut ini ke blok aktivitas manifes Anda
dan rancang activity_layout Anda dengan tampilan yang Anda inginkan
sumber
Setel tema di file manifes Android Anda.
Dan atur status dialog pada sentuhan untuk menyelesaikan.
sumber
Buat aktivitas sebagai dialog, Ini Contoh Lengkap
AndroidManife.xml
<activity android:name=".appview.settings.view.DialogActivity" android:excludeFromRecents="true" android:theme="@style/Theme.AppCompat.Dialog"/>
DialogActivity.kt
activity_dialog.xml
sumber
Beberapa kali Anda bisa mendapatkan Pengecualian yang diberikan di bawah ini
Disebabkan oleh: java.lang.IllegalStateException: Anda perlu menggunakan tema Theme.AppCompat (atau keturunan) dengan aktivitas ini.
Jadi untuk menyelesaikannya Anda bisa menggunakan solusi sederhana
tambahkan tema aktivitas Anda dalam manifes sebagai dialog untuk appCompact.
Ini dapat bermanfaat bagi seseorang.
sumber