Ich versuche, anklickbare Hyperlinks im Nachrichtentext zu haben, die von einem angezeigt werden AlertDialog
. Während die AlertDialog
Implementierung alle Hyperlinks (die <a href="...">
in der übergebenen Zeichenfolgenressource definiert wurden) gerne unterstreicht und einfärbt, können Builder.setMessage
die angegebenen Links nicht angeklickt werden.
Der Code, den ich derzeit verwende, sieht folgendermaßen aus:
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();
Ich möchte vermeiden, ein WebView
zu verwenden, um nur einen Textausschnitt anzuzeigen.
android
user-interface
hyperlink
custom-controls
Thilo-Alexander Ginkel
quelle
quelle
Antworten:
Wenn Sie in Ihrem Dialogfeld nur Text und URLs anzeigen, ist die Lösung möglicherweise einfacher
Wie hier gezeigt: http://picasaweb.google.com/lh/photo/up29wTQeK_zuz-LLvre9wQ?feat=directlink
quelle
Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
Die derzeit beliebteste Antwort hat mir nicht wirklich gefallen, da sie die Formatierung der Nachricht im Dialogfeld erheblich ändert.
Hier ist eine Lösung, mit der Sie Ihren Dialogtext verknüpfen können, ohne das Textformat zu ändern:
quelle
onCreateDialog
einemDialogFragment
. Musste nur anklickbaren Code setzenonStart
,show
der aufgerufen wurde, um das DialogFragmentsetMessage(R.string.something)
keine explizite Verknüpfung erforderlich. Es ist auch nicht erforderlich,create()
das AlertDialog-Objekt vor dem Aufruf aufzurufenshow()
(es kann im Builder aufgerufen werden), und dashow()
das Dialogobjekt zurückgegeben wird,findViewById(android.R.id.message)
kann das verkettet werden. Wickeln Sie alles in einen Try-Catch ein, nur für den Fall, dass die Nachrichtenansicht keine Textansicht ist und Sie eine präzise Formulierung haben.Dadurch sollten auch
<a href>
Tags hervorgehoben werden. Bitte beachten Sie, dass ich gerade ein paar Zeilen zu embyys Code hinzugefügt habe. so danke ihmquelle
setMessage(R.string.cool_link)
arbeitet mit<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()
ist hier der wichtige Teil, sonst kann die URL nicht angeklickt werden.Wenn Sie einfach eine Zeichenfolge verwenden möchten, ohne alle Ansichten zu bearbeiten, ist es am schnellsten, die Textansicht der Nachricht zu finden und zu verknüpfen:
quelle
JFTR, hier kommt die Lösung, die ich nach einiger Zeit herausgefunden habe:
Die entsprechende about.xml, die als Fragment aus den Android-Quellen ausgeliehen wurde, sieht folgendermaßen aus:
Die wichtigen Teile sind das Setzen von linksClickable auf true und setMovementMethod (LinkMovementMethod.getInstance ()).
quelle
setLinksClickable(true)
(ich denke, das war es schon), aber essetMovementMethod(...)
machte den Unterschied.Anstatt ...
... ich benutze jetzt:
quelle
Einfachster Weg:
quelle
Alle oben genannten Antworten entfernen keine HTML-Tags wie usw. Wenn die angegebene Zeichenfolge enthält, habe ich versucht, alle Tags zu entfernen, und dies funktioniert gut für mich
und der custom_dialog wäre wie;
Der obige Code entfernt das gesamte HTML-Tag und zeigt Beispiel als klickfähige URL aller anderen im angegebenen HTML-Formatierungstext an.
quelle
Mit den aktuellen Antworten war ich nicht wirklich zufrieden. Es gibt zwei Dinge, die wichtig sind, wenn Sie mit einem AlertDialog anklickbare Hyperlinks im href-Stil wünschen:
setMessage(…)
, da nur Ansichten anklickbaren HTML-Inhalt zulassensetMovementMethod(…)
)Hier ist ein funktionierendes Minimalbeispiel:
string.xml
MyActivity.java
quelle
Ich habe viele Fragen und Antworten überprüft, aber es funktioniert nicht. Ich habe es selbst gemacht. Dies ist das Code-Snippet auf MainActivity.java.
Setzen Sie dieses Tag in res \ values \ String.xml
quelle
Ich habe einige der oben beschriebenen Optionen kombiniert, um diese Funktion zu entwickeln, die für mich funktioniert. Übergeben Sie das Ergebnis an die SetView () -Methode des Dialog-Builders.
quelle
Wenn Sie a verwenden
DialogFragment
, sollte diese Lösung helfen.quelle
Für mich ist die beste Lösung zum Erstellen eines Datenschutzdialogs:
Überprüfen Sie das Arbeitsbeispiel: App-Link
quelle
Dazu gebe ich das Warnfeld in einer XML-Ressource an und lade es. Siehe zum Beispiel die Datei about.xml (siehe die ID ABOUT_URL), die gegen Ende von ChandlerQE.java instanziiert wird . Die relevanten Teile aus dem Java-Code:
quelle
Das ist meine Lösung. Es wird ein normaler Link ohne HTML-Tags und ohne sichtbare URL erstellt. Es hält auch das Design intakt.
quelle
Der einfachste und kürzeste Weg ist so
Android-Link im Dialog
quelle