Question

J'ai une activité nommée whereActity qui a des boîtes de dialogue de l'enfant aussi bien. Maintenant, je veux afficher cette activité comme une boîte de dialogue pour une autre activité.

Comment puis-je faire?

entrer image description ici

Était-ce utile?

La solution

Pour commencer l'activité en tant que dialogue que je l'ai définie comme ceci dans AndroidManifest.xml:

<activity android:theme="@android:style/Theme.Dialog" />

Utilisez cette propriété dans votre tag activity pour éviter que votre boîte de dialogue apparaît dans la liste des applications récemment utilisées

android:excludeFromRecents="true"

Si vous voulez arrêter votre dialogue / activité de destruction lorsque l'utilisateur clique en dehors de la boîte de dialogue:

Après setContentView() dans l'utilisation de Activity:

this.setFinishOnTouchOutside(false);

Maintenant, quand je l'appelle startActivity() il affiche une boîte de dialogue, avec l'activité précédente apparaît lorsque l'utilisateur appuie sur le bouton de retour.

Notez que si vous utilisez ActionBarActivity (ou thème AppCompat), vous aurez besoin d'utiliser @style/Theme.AppCompat.Dialog à la place.

Autres conseils

Utilisez ce code afin que l'activité de dialogue ne sera pas fermée lorsque l'utilisateur touche l'extérieur de la boîte de dialogue:

this.setFinishOnTouchOutside(false);

requiert un niveau API 11

Vous pouvez définir ce style dans les valeurs / styles.xml pour effectuer une plus ancienne 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>

Et utiliser AndroidManifest.xml:

   <activity android:name=".SplashActivity"
          android:configChanges="orientation"
          android:screenOrientation="sensor"
          android:theme="@style/Theme.UserDialog">

1 - Vous pouvez utiliser la même activité que les deux écran de dialogue et complet, dynamique:

Appel setTheme(android.R.style.Theme_Dialog) avant d'appeler setContentView(...) et super.oncreate() dans votre activité.

2 - Si vous ne prévoyez pas de changer le style de thème d'activité, vous pouvez utiliser

<activity android:theme="@android:style/Theme.Dialog" />

(comme indiqué par @faisal Khan)

Si vous avez besoin appcompat Version

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 votre activité est rendue comme une boîte de dialogue, il suffit d'ajouter un bouton à xml de votre activité,

<Button
    android:id="@+id/close_button"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="Dismiss" />

Ensuite, fixez un écouteur de clic dans votre code Java de l'activité. Dans l'auditeur, il suffit d'appeler finish()

Button close_button = (Button) findViewById(R.id.close_button);
close_button.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        finish();
    }
});

Cela devrait rejeter votre dialogue, vous revenez à l'activité d'appel.

Si vous souhaitez supprimer en-tête d'activité et fournir une vue personnalisée pour la boîte de dialogue ajouter ce qui suit au bloc d'activité vous manifeste

android:theme="@style/Base.Theme.AppCompat.Dialog"

et la conception de votre activity_layout avec votre vue souhaitée

Définir le thème dans votre fichier manifeste Android.

<activity android:name=".LoginActivity"
            android:theme="@android:style/Theme.Dialog"/>

Et définir l'état de dialogue sur le toucher pour terminer.

this.setFinishOnTouchOutside(false);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top