IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Créer un popup ni Toast, ni boite de dialogue


Sujet :

Android

  1. #1
    Membre confirmé
    Homme Profil pro
    Developpeur Android
    Inscrit en
    Février 2015
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Developpeur Android
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2015
    Messages : 104
    Par défaut Créer un popup ni Toast, ni boite de dialogue
    Bonjour,

    j'ai une demande assez particulière.
    Je dois créer une sorte de boite de dialogue qui s'afficherait à un endroit précis sur l'écran (de largeur l’écran et de hauteur le contenu) avec comme contenu un petit texte + un lien url cliquable.
    Et pour fermer ce pop up, il faudrait que l'utilisateur appuie en dehors de cette fenêtre.
    Je ne sais pas s'il existe un composant déjà présent de manière native ou s'il est possible d'en créer un.
    Il serait bien qu'elle soit personnalisable.
    Pour info, je débute.
    J'ai pas mal chercher, mais ne trouve pas mon bonheur.
    En fait, c'est entre le toast et la boite de dialogue.(un peu comme une bannière)

    Merci bcp pour votre retour

    Bomatch

  2. #2
    Membre Expert
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Par défaut
    Tu peux utiliser un AlertDialog avec un layout customisé, du genre :
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    LayoutInflater inflater = getActivity().getLayoutInflater();
    builder.setView(inflater.inflate(R.layout.mon_layout_joli_joli, null));
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  3. #3
    Membre confirmé
    Homme Profil pro
    Developpeur Android
    Inscrit en
    Février 2015
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Developpeur Android
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2015
    Messages : 104
    Par défaut
    Merci pour ta réponse,

    mais avec AlertDialogue est-il possible de la faire réagir comme précisé?
    C.a.d. y mettre un petit texte + url(clicable) et la fermer en cliquant en dehors de la fenêtre AlertDialogue.

    Je cherche encore de mon côté.

    Merci pour votre aise.

    Bomatch

  4. #4
    Membre confirmé
    Homme Profil pro
    Developpeur Android
    Inscrit en
    Février 2015
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Developpeur Android
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2015
    Messages : 104
    Par défaut
    Re-Bonsoir,

    désolé, j'ai répondu trop vite, je confirme qu'en cliquant à l'exterieure de la boite, celle-ci se ferme.
    Je vais bosser la customisation mais je pense que ça devrait aller.

    Sauf si mes supérieurs sont plus exigent que ça

    Merci encore à toi.

    Bomatch

  5. #5
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    Enfin.... n'importe quelle Activity qui ne soit pas en plein écran (avec un theme de type Dialog par exemple) fonctionnera à la manière d'un AlertDialog (qui est une activité "behind the scene")

  6. #6
    Membre confirmé
    Homme Profil pro
    Developpeur Android
    Inscrit en
    Février 2015
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Developpeur Android
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2015
    Messages : 104
    Par défaut
    Oui, je me demande si je n'ai pas été trompé par une remarque d'un de mes collègues.
    N'ayant pas assez d'expérience, je l'ai cru à 100% sans vérifier.

    Merci à vous.

    Je mets le post comme résolu et reviendrais si ma hiérarchie n'est pas satisfaite.

    @+

    Bomatch

  7. #7
    Membre Expert
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Par défaut
    Citation Envoyé par nicroman Voir le message
    Enfin.... n'importe quelle Activity qui ne soit pas en plein écran (avec un theme de type Dialog par exemple) fonctionnera à la manière d'un AlertDialog (qui est une activité "behind the scene")
    Ce genre d'activité stylisée avec le thème "Dialog" se lance idéalement avec startActivityForResult() ou bien startActivity tout court ?
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  8. #8
    Membre confirmé
    Homme Profil pro
    Developpeur Android
    Inscrit en
    Février 2015
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Developpeur Android
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2015
    Messages : 104
    Par défaut
    Mon responsable est assez content du resultat, mais est il possible de lancer cet AlertDialogue dès le démarrage de l appli Ça ne marche pas chez moi.
    De plus je ne parviens pas à rendre une partie du texte clicable. Le HTMLfrom met le lien en surbrillance mais rien ne se passe ...

    Thank you
    Bomatch

  9. #9
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par Hephaistos007 Voir le message
    Ce genre d'activité stylisée avec le thème "Dialog" se lance idéalement avec startActivityForResult() ou bien startActivity tout court ?
    L'un ou l'autre... selon qu'on ait besoin de savoir quand on revient (ou avec des données) ou pas....

  10. #10
    Membre confirmé
    Homme Profil pro
    Developpeur Android
    Inscrit en
    Février 2015
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Developpeur Android
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2015
    Messages : 104
    Par défaut
    Bonjour,
    me revoilà.

    Je suis parvenu à obtenir ce que l'on m'a demandé. Mais j'ai tout de même un petit souci d'affichage de cet AlertDialog Customisé.
    Voilà mon xml pour le Popup
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/trans80"
        android:orientation="vertical">
     
        <ImageView
            android:id="@+id/cross"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="right"
            android:layout_marginRight="15dp"
            android:layout_marginTop="15dp"
            android:background="@drawable/btn_tile_close" />
     
        <TextView
            android:id="@+id/message"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="15dp"
            android:layout_marginLeft="20dp"
            android:layout_marginRight="20dp"
            android:text="@string/message"
            android:textColor="@color/text"
            android:textSize="12sp" />
     
        <TextView
            android:id="@+id/information"
            android:layout_width="wrap_content"
            android:layout_height="20dp"
            android:layout_marginBottom="10dp"
            android:layout_marginLeft="20dp"
            android:background="@drawable/btn_background_etat2"
            android:paddingBottom="0dp"
            android:paddingLeft="13dp"
            android:paddingRight="13dp"
            android:paddingTop="0dp"
            android:text="@string/lien"
            android:textColor="@color/text"
            android:textSize="12sp"
            android:textStyle="bold"/>
     
    </LinearLayout>
    Voici mon Code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
     
     
    import android.content.Context;
    import android.content.Intent;
    import android.net.Uri;
    import android.os.Bundle;
    import android.support.v7.app.AlertDialog;
    import android.support.v7.app.AppCompatActivity;
    import android.util.Log;
    import android.view.Gravity;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.WindowManager;
    import android.widget.ImageView;
    import android.widget.TextView;
     
    public class MainActivity extends AppCompatActivity {
     
        Context mContext;
     
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            mContext = this;
     
            popup(findViewById(R.id.fond).getContext());
     
        }
     
     
        public void popup(final Context context) {
     
            /****
             * On récupère le layout du popup sans icon et on le travaille
             */
            LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            View layout = inflater.inflate(R.layout.popup, null);
            AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
                    context,R.style.DialogTheme);
            alertDialogBuilder.setView(layout);
     
            final AlertDialog alertDialog = alertDialogBuilder.create();
     
    /*        WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
            lp.copyFrom(alertDialog.getWindow().getAttributes());
            // Va avec la gestion de la hauteur contenue dans le <style name="DialogTheme">
            lp.height = 470;
            alertDialog.getWindow().setAttributes(lp);*/
     
     
            // show it
            alertDialog.getWindow().setGravity(Gravity.TOP);
            alertDialog.show();
     
            ImageView cross = (ImageView) layout.findViewById(R.id.cross);
            cross.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    alertDialog.dismiss();
                }
            });
     
            TextView link = (TextView) layout.findViewById(R.id.information);
            link.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    String url = "https://www.goole";
                    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
                    mContext.startActivity(intent);
                }
            });
     
        }
    }
    Le xml de l'activity principale est juste une image (fond).

    Dans le style j'ai rajouté ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        <style name="DialogTheme" parent="Theme.AppCompat">
     
            <item name="android:layout_height">wrap_content</item>
            <!-- BackGround Transparent pour gestion de la hauteur plus facile -->
            <item name="android:windowBackground">@color/trans</item>
     
        </style>
    En enlevant les commentaires du code Principal dans la partie WindowsManager (durant la construction de mon AlertDialog), j'obtiens ce que je veux mais le problème, c'est que ma hauteur est en dur. Impossible de la mettre en Wrap_Content.
    Si je laisse les commentaires, alors j'ai bien mon pop-up (AlertDialog) en haut mais en dessous, la fenetre Alertedialog continue jusqu'en bas.

    J'aimerai pouvoir regler cette hauteur de manière automatique et ainsi fermer la fenetre en cliquant à l'exterieur de celle ci.

    J'espère avoir été assez clair

    C'est vraiment dingue, je n'arrive pas à trouver un truc simple pour ce problème quasiment résolu.

    Merci à vous, si vous pouvez m'aider

    Bomatch

  11. #11
    Membre confirmé
    Homme Profil pro
    Developpeur Android
    Inscrit en
    Février 2015
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Developpeur Android
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2015
    Messages : 104
    Par défaut
    SUPER, j'ai compris mon erreur.
    En fait le Wrap Content, je le faisais dans le Style du dialog

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <style name="DialogTheme" parent="Theme.AppCompat">
     
    <item name="android:layout_height">wrap_content</item>
    <!-- BackGround Transparent pour gestion de la hauteur plus facile -->
    <item name="android:windowBackground">@color/trans</item>
     
    </style>
    Je l'ai enlevé et mis dans mon code (dans la partie WindowManage que j'ai décommenté)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
    lp.copyFrom(alertDialog.getWindow().getAttributes());
    lp.height = ViewGroup.LayoutParams.WRAP_CONTENT;
    alertDialog.getWindow().setAttributes(lp);
    Voilà, c'est vraiment super quand on a la solution


    Merci encore pour vos conseils

    Bomatch

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 28/08/2007, 12h09
  2. Envoi d'une boite de dialogue ou Popup
    Par papepapis dans le forum ASP.NET
    Réponses: 4
    Dernier message: 27/08/2007, 15h05
  3. Affichage d'une boite de dialogue nonmodale avec MFC
    Par the.cable.guy dans le forum Windows
    Réponses: 3
    Dernier message: 04/07/2003, 17h59
  4. Réponses: 5
    Dernier message: 04/04/2003, 15h02
  5. Comment cree une boite de dialogue parcourir
    Par kenshi dans le forum MFC
    Réponses: 5
    Dernier message: 06/01/2003, 10h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo