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 :

Lien hypertexte dans un edittext


Sujet :

Android

  1. #1
    Membre averti
    Homme Profil pro
    Technicien auto
    Inscrit en
    Décembre 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien auto

    Informations forums :
    Inscription : Décembre 2014
    Messages : 19
    Par défaut Lien hypertexte dans un edittext
    Bonjour,
    dans le but de supprimer un spinner de mon application (simplification pour l'utilisateur) je cherche à ajouter des liens hypertexte dans un Edittext qui pointeraient vers une fonction.
    Actuellement, dans un string j’insère mes liens de cette façon:
    "blabla"+"<link>lien</link>"+"blabla"
    Les liens hypertextes ne sont pas des adresses mais des caractères et de ce fait ils ne sont pas affichés comme lien dans l'edittext ce qui me cause problème dans un premier temps.
    j'affiche dans la l'edittext:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Txt.setText(Html.fromHtml(Mon_texte_avec_les_liens));
    En suite comment capturer le clic sur le lien?

    Merci pour votre aide,
    bonne journée.

  2. #2
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Par défaut
    Je te conseillerai de t'intéresser à la propriété "autolink" de l'EditText pour faire ce que tu souhaites.
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  3. #3
    Membre averti
    Homme Profil pro
    Technicien auto
    Inscrit en
    Décembre 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien auto

    Informations forums :
    Inscription : Décembre 2014
    Messages : 19
    Par défaut
    Bonjour,
    merci pour cette réponse rapide,
    c'est ce que j'utilise mais à partir du moment ou ce n'est pas un vrai lien ça ne fonctionne pas, exemples:

    Ce code ne fonctionne pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
                 for(int i = 1; i < list.size(); i++)
                 {
                     ListOfFonction += list.get(i).toString()+": "+"<link>BLABLA</link>"+"<BR>";
                 }
                 Txt.setText(Html.fromHtml(ListOfFonction));

    Là c'est ok le lien est actif dans l'edittext

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
                 for(int i = 1; i < list.size(); i++)
                 {
                     ListOfFonction += list.get(i).toString()+": "+"<link>BLABLA.fr</link>"+"<BR>";
                 }
                 Txt.setText(Html.fromHtml(ListOfFonction));

  4. #4
    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
    Intéresses toi plutôt à Linkify : http://developer.android.com/referen...l/Linkify.html (et oublies ton histoire de xml)
    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

  5. #5
    Membre averti
    Homme Profil pro
    Technicien auto
    Inscrit en
    Décembre 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien auto

    Informations forums :
    Inscription : Décembre 2014
    Messages : 19
    Par défaut
    Bonjour,
    ben j'ai pas pigé comment "linker" un mot vers une fonction de mon appli.
    En fait dans un texte je souhaite mettre en hyperlien certain mots (détectés en amont),
    puis lors du clic sur ces mots une fonction serai lancé.
    Avec Linkify si j'ai bien compris, seul des liens vers un navigateur, Num téléphone, Email ou Map sont possible.

  6. #6
    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
    Le Linkify peut être étendu à ce que l'on veut. Il suffit de lui donner un pattern à rechercher (donc il faut que ton texte ait une particularité). Par exemple, tes liens devront commencer par un @, et le pattern sera un truc du genre "[@]+[A-Za-z0-9-_]+\\b". Ensuite, il faut indiquer quel scheme utiliser puisque tu n'est pas dans un cas classique (http://, tel:, etc). Donc, dans ton cas prenons le scheme lolo
    Au clic sur le lien, un intent ayant ce scheme sera généré, du genre lolo:@choucroutte. Une de tes activités devra prendre en charge ce scheme.

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Linkify.addLinks(maView, Pattern.compile("[@]+[A-Za-z0-9-_]+\\b"), "lolo");

    Puis :

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
            <activity android:name=".ClickSurLien">
                <intent-filter>
                    <action android:name="android.intent.action.VIEW" />
                    <data android:scheme="lolo" />
                    <category android:name="android.intent.category.DEFAULT" />
                </intent-filter>
            </activity>

    A vérifier. Je n'ai jamais testé.
    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

  7. #7
    Membre averti
    Homme Profil pro
    Technicien auto
    Inscrit en
    Décembre 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien auto

    Informations forums :
    Inscription : Décembre 2014
    Messages : 19
    Par défaut
    Bonjour,
    merci pour cette réponse rapide,
    j'ai bien compris la démarche mais j'ai du mal à la mettre en œuvre.
    Les caractères sont bien en hyperlien mais je n'arrive pas à capturer le clic.
    Mon TextView est dans un fragment de l'activité, dans le Manifest j'ai:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
             <activity
                android:name=".MainTool"
                android:label="@string/app_name"
                android:screenOrientation="portrait" >
                 <intent-filter>
                 <action android:name="android.intent.action.VIEW" />
    			<category android:name="android.intent.category.DEFAULT" />
    			<category android:name="android.intent.category.BROWSABLE" />
              	 <data android:scheme="lolo" />
                </intent-filter>
            </activity>
    Après remplissage du TextView:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	 Linkify.addLinks(Txt,Pattern.compile("TEST+\\b"), "lolo");
    	Txt.setMovementMethod(LinkMovementMethod.getInstance());
    Et pour finir la capture du clic:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    protected void onNewIntent(final Intent intent)
    {
        if (intent.getScheme().equals("lolo"))
        {
        	Toast.makeText( context,"Clic sur lien",Toast.LENGTH_LONG).show();
        }
     
    }

  8. #8
    Membre averti
    Homme Profil pro
    Technicien auto
    Inscrit en
    Décembre 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien auto

    Informations forums :
    Inscription : Décembre 2014
    Messages : 19
    Par défaut
    Bonjour,
    pas simple pour un débutant....
    pour réceptionner le clic sur les liens j'ai dans mon listener fait comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Txt.setOnClickListener(new OnClickListener() {
     
    	@Override
    	public void onClick(View v) {
    		Uri data = getActivity().getIntent().getData();
    		if(data != null){
    		    String uri = data.toString();
    		 Toast.makeText( context,uri,Toast.LENGTH_LONG).show();
    		}
     
    	}
    });
    Set des Liens:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Pattern pattern = Pattern.compile("[@]+[A-Za-z0-9-_]+\\b");
                   String userViewURL = "lolo://";
                   Txt.setText(ListOfFonction);
                   Linkify.addLinks(Txt, pattern,userViewURL);
                   Txt.setMovementMethod(LinkMovementMethod.getInstance());
    Mon Manifest:

    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
    <application
            android:allowBackup="true"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" >
            <activity
                android:name="SplashScreen"
                android:configChanges="orientation|screenSize"
                android:label="@string/app_name" >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
     
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
            <activity
                android:name=".MainTool"
                android:label="@string/app_name"
                android:screenOrientation="portrait" >
                <intent-filter>
                    <action android:name="android.intent.action.VIEW" />
     
                    <category android:name="android.intent.category.DEFAULT" />
     
                    <category android:name="android.intent.category.BROWSABLE" />
     
                    <data android:scheme="lolo" />
                </intent-filter>
            </activity>
        </application>



    Ca fonctionne, le toast s'affiche mais suite au clic sur le lien, l’application zappe au 1er fragment de mon ViewPager.

Discussions similaires

  1. lien hypertexte dans une zone de liste
    Par corwin44 dans le forum Access
    Réponses: 1
    Dernier message: 02/11/2005, 11h48
  2. lien hypertexte dans le corps d'un mailto
    Par ludovik dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 22/10/2005, 16h10
  3. [MFC] liens hypertexte dans un CRichEditCtrl
    Par hiko-seijuro dans le forum MFC
    Réponses: 1
    Dernier message: 15/06/2005, 12h14
  4. Réponses: 3
    Dernier message: 26/10/2004, 07h31
  5. lien hypertexte dans une anim flash
    Par vedder dans le forum Flash
    Réponses: 17
    Dernier message: 14/01/2004, 14h11

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