Respuestas:
Para comenzar la actividad como diálogo, lo definí así en AndroidManifest.xml
:
<activity android:theme="@android:style/Theme.Dialog" />
Use esta propiedad dentro de su activity
etiqueta para evitar que su cuadro de diálogo aparezca en la lista de aplicaciones utilizadas recientemente
android:excludeFromRecents="true"
Si desea evitar que su diálogo / actividad se destruya cuando el usuario hace clic fuera del diálogo:
Después setContentView()
de su Activity
uso:
this.setFinishOnTouchOutside(false);
Ahora, cuando lo llamo, startActivity()
se muestra como un cuadro de diálogo, con la actividad anterior que se muestra cuando el usuario presiona el botón Atrás.
Tenga en cuenta que si está utilizando ActionBarActivity
(o el tema AppCompat), deberá utilizarlo @style/Theme.AppCompat.Dialog
en su lugar.
@style/Theme.AppCompat.Dialog
this.setFinishOnTouchOutside(false);
después del setContentView()
método para evitar que la actividad se destruya cuando hace clic fuera del cuadro de diálogo que creó.
Use este código para que la actividad del diálogo no se cierre cuando el usuario toque fuera del cuadro de diálogo:
this.setFinishOnTouchOutside(false);
requiere API nivel 11
Puede definir este estilo en values / styles.xml para realizar un Splash más antiguo:
<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>
Y úsalo AndroidManifest.xml:
<activity android:name=".SplashActivity"
android:configChanges="orientation"
android:screenOrientation="sensor"
android:theme="@style/Theme.UserDialog">
@drawable/trans
: deberías poder usar @android:color/transparent
lo que crearía un ColorDrawable
para usar como fondo.
1 - Puede usar la misma actividad como diálogo y pantalla completa, dinámicamente:
Llame setTheme(android.R.style.Theme_Dialog)
antes de llamar setContentView(...)
y super.oncreate()
en su Actividad.
2 - Si no planea cambiar el estilo del tema de actividad, puede usar
<activity android:theme="@android:style/Theme.Dialog" />
(como lo menciona @faisal khan)
<activity android:theme="@android:style/Theme.Dialog" />
) y configure programáticamente el tema de la actividad en un diálogo o una actividad en onCreate stackoverflow.com/a/35915764/2898715
Si necesita la versión de 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>
para que funcione para mí. También agregué <item name="android:windowActionBar">false</item>
por si acaso.
<item name="android:windowNoTitle">true</item>
no funcionó (Android 5.0.1), y tuve que cambiar a<item name="windowNoTitle">true</item>
Si su actividad se representa como un cuadro de diálogo, simplemente agregue un botón al xml de su actividad,
<Button
android:id="@+id/close_button"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Dismiss" />
Luego, adjunte un detector de clics en el código Java de su Actividad. En el oyente, simplemente llamefinish()
Button close_button = (Button) findViewById(R.id.close_button);
close_button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
Eso debería descartar su diálogo y regresarlo a la actividad de llamada.
Si desea eliminar el encabezado de actividad y proporcionar una vista personalizada para el cuadro de diálogo, agregue lo siguiente al bloque de actividad de su manifiesto
android:theme="@style/Base.Theme.AppCompat.Dialog"
y diseñe su activity_layout con la vista deseada
Establezca el tema en su archivo de manifiesto de Android.
<activity android:name=".LoginActivity"
android:theme="@android:style/Theme.Dialog"/>
Y configure el estado del diálogo al tacto para finalizar.
this.setFinishOnTouchOutside(false);
Crear actividad como diálogo, aquí hay un ejemplo completo
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>
Algunas veces puede obtener la excepción que se proporciona a continuación
Causado por: java.lang.IllegalStateException: debe utilizar un tema Theme.AppCompat (o descendiente) con esta actividad.
Entonces, para resolver, puede usar una solución simple
agregue el tema de su actividad en manifiesto como diálogo para appCompact.
android:theme="@style/Theme.AppCompat.Dialog"
Puede ser útil para alguien.