Actividad Android como un cuadro de diálogo
-
22-09-2019 - |
Pregunta
Tengo una whereActity
llamado Actividad que tiene diálogos niño también. Ahora, quiero mostrar esta actividad como un cuadro de diálogo para otra actividad.
¿Cómo puedo hacer eso?
Solución
Para iniciar la actividad como de diálogo he definido como este en AndroidManifest.xml
:
<activity android:theme="@android:style/Theme.Dialog" />
Utilice esta propiedad dentro de la etiqueta activity
para evitar que su diálogo aparece en la lista de las aplicaciones utilizadas recientemente
android:excludeFromRecents="true"
Si desea detener el diálogo / actividad de ser destruido cuando el usuario hace clic fuera del cuadro de diálogo:
Después de setContentView()
en su uso Activity
:
this.setFinishOnTouchOutside(false);
Ahora cuando llamo startActivity()
Se muestra como un cuadro de diálogo, con la actividad anterior se muestra cuando el usuario presiona el botón de retroceso.
Tenga en cuenta que si está utilizando ActionBarActivity
(o tema AppCompat), que necesita para su uso @style/Theme.AppCompat.Dialog
lugar.
Otros consejos
Utilice este código para que la actividad de diálogo no se cerrará cuando el usuario toca fuera del cuadro de diálogo:
this.setFinishOnTouchOutside(false);
requiere el nivel API 11
Se puede definir este estilo en los valores / styles.xml para realizar una más antigua Splash:
<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 usarlo AndroidManifest.xml:
<activity android:name=".SplashActivity"
android:configChanges="orientation"
android:screenOrientation="sensor"
android:theme="@style/Theme.UserDialog">
1 - Usted puede usar la misma actividad que tanto el diálogo y la pantalla completa, de forma dinámica:
Llamada setTheme(android.R.style.Theme_Dialog)
antes de llamar setContentView(...)
y super.oncreate()
en su actividad.
2 - Si no va a cambiar el estilo de Animación temática puede utilizar
<activity android:theme="@android:style/Theme.Dialog" />
(como se mencionó por @faisal Khan)
Si necesita Appcompat Versión
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>
Si su actividad se representa como un cuadro de diálogo, sólo tiene que añadir un botón a XML de su actividad,
<Button
android:id="@+id/close_button"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Dismiss" />
A continuación, conectar un detector de clics en código Java de su actividad. En el oyente, sólo tiene que llamar finish()
Button close_button = (Button) findViewById(R.id.close_button);
close_button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
Esto se debe desestimar su diálogo, volviendo a llamar a la actividad.
Si desea eliminar conector de actividad y proporcionar una vista personalizada para el diálogo de añadir el siguiente al bloque de la actividad de que se manifiestan
android:theme="@style/Base.Theme.AppCompat.Dialog"
y diseñar su activity_layout con su vista deseada
para fijar el tema en el archivo de manifiesto de Android.
<activity android:name=".LoginActivity"
android:theme="@android:style/Theme.Dialog"/>
Y establecer el estado de diálogo en el tacto a fin.
this.setFinishOnTouchOutside(false);