J'ai une activité nommée whereActity
qui possède également des boîtes de dialogue enfant. Maintenant, je veux afficher cette activité comme un dialogue pour une autre activité.
Comment puis-je faire ça ?
J'ai une activité nommée whereActity
qui possède également des boîtes de dialogue enfant. Maintenant, je veux afficher cette activité comme un dialogue pour une autre activité.
Comment puis-je faire ça ?
Pour lancer l'activité en tant que dialogue, je l'ai définie comme suit dans le fichier AndroidManifest.xml
:
<activity android:theme="@android:style/Theme.Dialog" />
Utilisez cette propriété dans votre activity
pour éviter que votre boîte de dialogue n'apparaisse dans la liste des applications récemment utilisées.
android:excludeFromRecents="true"
Si vous voulez empêcher que votre dialogue/activité soit détruit lorsque l'utilisateur clique en dehors du dialogue :
Après setContentView()
dans votre Activity
utiliser :
this.setFinishOnTouchOutside(false);
Maintenant, quand j'appelle startActivity()
il s'affiche sous forme de dialogue, l'activité précédente étant affichée lorsque l'utilisateur appuie sur le bouton retour.
Notez que si vous utilisez ActionBarActivity
(ou le thème AppCompat), vous devrez utiliser la fonction @style/Theme.AppCompat.Dialog
à la place.
L'utilisation de la balise Android:theme="@Android:style/Theme.Dialog" est la meilleure solution, mais n'oubliez pas d'utiliser excludeFromRecents=true, sinon votre boîte de dialogue apparaîtra dans les applications récemment utilisées (maintenez la touche Home enfoncée).
J'ai également eu des difficultés avec la taille de la boîte de dialogue si j'utilise LinearLayout comme disposition racine. L'utilisation de RelativeLayout est utile si vous devez définir requestWindowFeature(Window.FEATURE_NO_TITLE) ou getWindow().setFeatureDrawableResource(Window.FEATURE_NO_TITLE, Android.R.drawable.ic_dialog_alert).
J'ai des difficultés avec l'activité en tant que dialogue. j'ai fait l'activité en tant que dialogue mais le problème est que lorsque je clique en dehors de l'activité, elle se ferme automatiquement ??? y a-t-il une solution à ce problème ? ?????
Vous pouvez définir ce style dans values/styles.xml pour réaliser un Splash plus ancien :
<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 l'utiliser AndroidManifest.xml :
<activity android:name=".SplashActivity"
android:configChanges="orientation"
android:screenOrientation="sensor"
android:theme="@style/Theme.UserDialog">
Concernant @drawable/trans
: vous devriez être en mesure d'utiliser @android:color/transparent
ce qui créerait un ColorDrawable
à utiliser comme arrière-plan.
Le problème est que l'activité remplit tout l'écran mais ne s'affiche pas en tant que superposition de dialogue.
1 - Vous pouvez utiliser la même activité à la fois en dialogue et en plein écran, de manière dynamique :
Appelez setTheme(android.R.style.Theme_Dialog)
avant d'appeler setContentView(...)
y super.oncreate()
dans votre activité.
2 - Si vous ne prévoyez pas de changer le style du thème de l'activité, vous pouvez utiliser
<activity android:theme="@android:style/Theme.Dialog" />
(comme mentionné par @faisal khan)
Juste une note : lorsque j'utilise la méthode programmatique (la première méthode), tout ce qui se trouve derrière la boîte de dialogue est complètement noirci ; ce n'était pas un problème dans l'autre méthode cependant. Dommage... Je voulais vraiment le faire de manière programmatique....Nexus 5, Android 6.0.1
@anand oui, en combinant les deux solutions, le problème de blackout est résolu : définir le thème de l'activité à un thème de dialogue dans le manifeste Android ( <activity android:theme="@android:style/Theme.Dialog" />
) et définir par programme le thème de l'activité pour un dialogue ou une activité dans onCreate stackoverflow.com/a/35915764/2898715
Si votre activité est rendue sous forme de dialogue, il suffit d'ajouter un bouton au fichier xml de votre activité,
<Button
android:id="@+id/close_button"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Dismiss" />
Attachez ensuite un écouteur de clic dans le code Java de votre activité. Dans l'écouteur, appelez simplement finish()
Button close_button = (Button) findViewById(R.id.close_button);
close_button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
La boîte de dialogue devrait s'interrompre et vous ramener à l'activité d'appel.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
0 votes
Si vous voulez juste le dialogue de chargement, vous pouvez utiliser ProgressDialog