studio - Actividad de Android como diálogo
popup android studio (8)
Tengo una actividad llamada whereActity
que también tiene diálogos secundarios. Ahora, quiero mostrar esta actividad como un diálogo para otra actividad.
¿Cómo puedo hacer eso?
1 - Puede usar la misma actividad tanto para el diálogo como para la pantalla completa, dinámicamente:
Llame a setTheme(android.R.style.Theme_Dialog)
antes de llamar a setContentView(...)
y super.oncreate()
en su actividad.
2 - Si no planeas cambiar el estilo del tema de la actividad puedes usar
<activity android:theme="@android:style/Theme.Dialog" />
(como lo menciona @faisal khan)
Establecer el tema en su archivo de manifiesto de Android.
<activity android:name=".LoginActivity"
android:theme="@android:style/Theme.Dialog"/>
Y establece el estado de diálogo al tocar para finalizar.
this.setFinishOnTouchOutside(false);
Para iniciar la actividad como diálogo, lo AndroidManifest.xml
en AndroidManifest.xml
:
<activity android:theme="@android:style/Theme.Dialog" />
Utilice esta propiedad dentro de su etiqueta de activity
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 haga clic fuera del diálogo:
Después de setContentView()
en tu Activity
usa:
this.setFinishOnTouchOutside(false);
Ahora cuando llamo startActivity()
se muestra como un diálogo, con la actividad anterior mostrada cuando el usuario presiona el botón Atrás.
Tenga en cuenta que si está utilizando ActionBarActivity
(o el tema AppCompat), necesitará usar @style/Theme.AppCompat.Dialog
en @style/Theme.AppCompat.Dialog
lugar.
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 utilízalo AndroidManifest.xml:
<activity android:name=".SplashActivity"
android:configChanges="orientation"
android:screenOrientation="sensor"
android:theme="@style/Theme.UserDialog">
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ña tu actividad_layout con la vista deseada
Si necesita la versión 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>
Si su actividad se representa como un 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 llame a finish()
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 tu diálogo, devolviéndote a la actividad de llamada.
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 nivel API 11