Jawaban:
Untuk memulai aktivitas sebagai dialog, saya mendefinisikannya seperti ini di AndroidManifest.xml:
<activity android:theme="@android:style/Theme.Dialog" />
Gunakan properti ini di dalam activitytag Anda untuk menghindari agar Dialog Anda muncul di daftar aplikasi yang baru saja digunakan
android:excludeFromRecents="true"
Jika Anda ingin menghentikan dialog / aktivitas Anda dari kehancuran ketika pengguna mengklik di luar dialog:
Setelah setContentView()Anda Activitygunakan:
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.
@style/Theme.AppCompat.Dialog
this.setFinishOnTouchOutside(false);setelah setContentView()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:
this.setFinishOnTouchOutside(false);
membutuhkan API level 11
Anda dapat mendefinisikan gaya ini dalam values / styles.xml untuk melakukan Splash yang lebih lama:
<style name="Theme.UserDialog" parent="android:style/Theme.Dialog">
<item name="android:windowFrame">@null</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowNoTitle">true</item>
<item name="android:background">@android:color/transparent</item>
<item name="android:windowBackground">@drawable/trans</item>
</style>
Dan gunakan itu AndroidManifest.xml:
<activity android:name=".SplashActivity"
android:configChanges="orientation"
android:screenOrientation="sensor"
android:theme="@style/Theme.UserDialog">
@drawable/trans: Anda harus dapat menggunakan @android:color/transparentyang akan membuat ColorDrawableuntuk digunakan sebagai latar belakang.
1 - Anda dapat menggunakan aktivitas yang sama dengan dialog dan layar penuh, secara dinamis:
Panggil setTheme(android.R.style.Theme_Dialog)sebelum menelepon setContentView(...)dan super.oncreate()dalam Aktivitas Anda.
2 - Jika Anda tidak berencana mengubah gaya tema aktivitas yang dapat Anda gunakan
<activity android:theme="@android:style/Theme.Dialog" />
(seperti yang disebutkan oleh @faisal khan)
<activity android:theme="@android:style/Theme.Dialog" />) dan setel program secara terprogram untuk dialog atau aktivitas di onCreate stackoverflow.com/a/35915764/2898715
Jika Anda membutuhkan Versi Appcompat
style.xml
<!-- Base application theme. -->
<style name="AppDialogTheme" parent="Theme.AppCompat.Light.Dialog">
<!-- Customize your theme here. -->
<item name="windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
</style>
yourmanifest.xml
<activity
android:name=".MyActivity"
android:label="@string/title"
android:theme="@style/AppDialogTheme">
</activity>
<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,
<Button
android:id="@+id/close_button"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Dismiss" />
Kemudian lampirkan pendengar klik dalam kode Java Activity Anda. Di pendengar, cukup panggilfinish()
Button close_button = (Button) findViewById(R.id.close_button);
close_button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
Itu akan mengabaikan dialog Anda, mengembalikan Anda ke aktivitas menelepon.
Jika Anda ingin menghapus tajuk aktivitas & memberikan tampilan khusus untuk dialog, tambahkan berikut ini ke blok aktivitas manifes Anda
android:theme="@style/Base.Theme.AppCompat.Dialog"
dan rancang activity_layout Anda dengan tampilan yang Anda inginkan
Setel tema di file manifes Android Anda.
<activity android:name=".LoginActivity"
android:theme="@android:style/Theme.Dialog"/>
Dan atur status dialog pada sentuhan untuk menyelesaikan.
this.setFinishOnTouchOutside(false);
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
class DialogActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_dialog)
this.setFinishOnTouchOutside(true)
btnOk.setOnClickListener {
finish()
}
}
}activity_dialog.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#0072ff"
android:gravity="center"
android:orientation="vertical">
<LinearLayout
android:layout_width="@dimen/_300sdp"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical">
<TextView
android:id="@+id/txtTitle"
style="@style/normal16Style"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:paddingTop="20dp"
android:paddingBottom="20dp"
android:text="Download"
android:textColorHint="#FFF" />
<View
android:id="@+id/viewDivider"
android:layout_width="match_parent"
android:layout_height="2dp"
android:background="#fff"
android:backgroundTint="@color/white_90"
app:layout_constraintBottom_toBottomOf="@id/txtTitle" />
<TextView
style="@style/normal14Style"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:paddingTop="20dp"
android:paddingBottom="20dp"
android:text="Your file is download"
android:textColorHint="#FFF" />
<Button
android:id="@+id/btnOk"
style="@style/normal12Style"
android:layout_width="100dp"
android:layout_height="40dp"
android:layout_marginBottom="20dp"
android:background="@drawable/circle_corner_layout"
android:text="Ok"
android:textAllCaps="false" />
</LinearLayout>
</LinearLayout>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.
android:theme="@style/Theme.AppCompat.Dialog"
Ini dapat bermanfaat bagi seseorang.