Ce que j'essaie d'accomplir, c'est d'avoir des hyperliens cliquables dans le texte du message affiché par un fichier AlertDialog
. Alors que l' AlertDialog
implémentation souligne et colore joyeusement les hyperliens (définis à l'aide <a href="...">
de la ressource de chaîne transmise à Builder.setMessage
), les liens ne deviennent pas cliquables.
Le code que j'utilise actuellement ressemble à ceci:
new AlertDialog.Builder(MainActivity.this).setTitle(
R.string.Title_About).setMessage(
getResources().getText(R.string.about))
.setPositiveButton(android.R.string.ok, null)
.setIcon(R.drawable.icon).show();
Je voudrais éviter d'utiliser un WebView
pour afficher simplement un extrait de texte.
android
user-interface
hyperlink
custom-controls
Thilo-Alexander Ginkel
la source
la source
Réponses:
Si vous n’affichez que du texte et des URL dans votre boîte de dialogue, la solution est peut-être plus simple
Comme indiqué ici http://picasaweb.google.com/lh/photo/up29wTQeK_zuz-LLvre9wQ?feat=directlink
la source
Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
Je n'ai pas vraiment aimé la réponse la plus populaire actuellement car elle modifie considérablement la mise en forme du message dans la boîte de dialogue.
Voici une solution qui liera le texte de votre boîte de dialogue sans changer autrement le style du texte:
la source
onCreateDialog
d'unDialogFragment
. Juste eu à définir le code cliquable àonStart
donné quishow
avait été appelé pour invoquer le DialogFragmentsetMessage(R.string.something)
, il n'est pas nécessaire de lier explicitement. Il n'est pas non plus nécessaire d'create()
utiliser l'objet AlertDialog avant l'appelshow()
(il peut être appelé sur le générateur), et commeshow()
renvoie l'objet de dialogue, lefindViewById(android.R.id.message)
peut être chaîné. Enveloppez le tout dans un try-catch juste au cas où la vue du message ne serait pas un TextView, et vous avez une formulation concise.Cela devrait également faire en sorte que les
<a href>
balises soient mises en évidence. Veuillez noter que je viens d'ajouter quelques lignes au code d'emmby. tellement crédit à luila source
setMessage(R.string.cool_link)
fonctionne avec<string name="cool_link"><a href="http://www.google.com">Check this link out</a></string>
Html.fromHtml("string with links", Html.FROM_HTML_MODE_LEGACY)
setMovementMethod()
est la partie importante ici, sinon l'URL ne sera pas cliquable.En fait, si vous souhaitez simplement utiliser une chaîne sans traiter toutes les vues, le moyen le plus rapide est de trouver le texte du message et de le lier:
la source
JFTR, voici la solution que j'ai trouvée après un certain temps:
Le about.xml correspondant emprunté sous forme de fragment aux sources Android ressemble à ceci:
Les parties importantes sont la définition de linksClickable sur true et setMovementMethod (LinkMovementMethod.getInstance ()).
la source
setLinksClickable(true)
(je suppose que c'était déjà le cas), mais cela asetMovementMethod(...)
fait toute la différence.Au lieu de ...
... j'utilise maintenant:
la source
Manière la plus simple:
la source
Toute la réponse ci-dessus ne supprimera pas la balise html comme, etc. si la chaîne donnée contient, j'ai essayé de supprimer toutes les balises, et cela fonctionne bien pour moi
et le custom_dialog serait comme;
Le code ci-dessus supprimera toutes les balises html et affichera Exemple comme URL cliquable toutes les autres dans le texte de mise en forme html spécifié.
la source
Je n'étais pas vraiment satisfait des réponses actuelles. Il y a deux choses qui sont importantes lorsque vous voulez des hyperliens cliquables dans le style href avec un AlertDialog:
setMessage(…)
, car seules les vues autorisent le contenu HTML cliquablesetMovementMethod(…)
)Voici un exemple minimal de travail:
strings.xml
MyActivity.java
la source
J'ai vérifié de nombreuses questions et réponses, mais cela ne fonctionne pas. Je l'ai fait moi-même. Voici l'extrait de code sur MainActivity.java.
Mettez cette balise sur res \ values \ String.xml
la source
J'ai combiné certaines des options décrites ci-dessus pour créer cette fonction qui fonctionne pour moi. transmettez le résultat à la méthode SetView () du générateur de dialogue.
la source
Si vous utilisez a
DialogFragment
, cette solution devrait vous aider.la source
Pour moi, la meilleure solution pour créer un dialogue de politique de confidentialité est:
vérifiez l'exemple de travail: lien d'application
la source
Je fais cela en spécifiant la boîte d'alerte dans une ressource XML et en la chargeant. Voir par exemple about.xml (voir l'identifiant ABOUT_URL) qui est instancié vers la fin de ChandlerQE.java . Les parties pertinentes du code java:
la source
C'est ma solution. Il crée un lien normal sans balises html impliquées et sans aucune URL visible. Il garde également le design intact.
la source
Le moyen le plus simple et le plus court est comme ça
Lien Android dans la boîte de dialogue
la source