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?

introducir descripción de la imagen aquí

¿Fue útil?

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);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top