Angesichts des folgenden HTML:
<p>This is text and this is an image <img src="http://www.example.com/image.jpg" />.</p>
Ist es möglich, das Bild zu rendern? Wenn mContentText.setText(Html.fromHtml(text));
ich dieses Snippet: verwende , erhalte ich eine Cyan-Box mit schwarzen Rändern, was mich glauben lässt, dass eine TextView eine Vorstellung davon hat, was ein IMG-Tag ist.
Antworten:
Wenn Sie sich die Dokumentation
Html.fromHtml(text)
ansehen, sehen Sie, dass dort steht:Wenn Sie diese Ersetzung nicht selbst durchführen möchten, können Sie die andere
Html.fromHtml()
Methode verwenden, die einHtml.TagHandler
und einHtml.ImageGetter
als Argumente sowie den zu analysierenden Text verwendet.In Ihrem Fall könnten Sie analysieren ,
null
wie für dieHtml.TagHandler
aber müssen Sie Ihre eigenen implementieren ,Html.ImageGetter
da es keine Standardimplementierung ist.Das Problem, das Sie haben werden, ist jedoch, dass die
Html.ImageGetter
Synchronisierung ausgeführt werden muss. Wenn Sie Bilder aus dem Internet herunterladen, möchten Sie dies wahrscheinlich asynchron tun. Wenn Sie Bilder hinzufügen können, die Sie als Ressourcen in Ihrer Anwendung anzeigen möchten,ImageGetter
wird Ihre Implementierung viel einfacher. Sie könnten mit so etwas davonkommen wie:Sie möchten wahrscheinlich etwas Klügeres herausfinden, um Quellzeichenfolgen Ressourcen-IDs zuzuordnen.
quelle
Ich habe in meiner App implementiert, Referenz aus dem pskink .thanx viel genommen
Wie unten @rpgmaker Kommentar angegeben, habe ich diese Antwort hinzugefügt
Ja, Sie können die ResolveInfo- Klasse verwenden
Überprüfen Sie, ob Ihre Datei mit bereits installierten Apps unterstützt wird oder nicht
mit dem folgenden Code:
quelle
Dies ist, was ich verwende, was nicht erforderlich ist, dass Sie Ihre Ressourcennamen festschreiben und nach den zeichnbaren Ressourcen zuerst in Ihren Apps-Ressourcen und dann in den Standard-Android-Ressourcen suchen, wenn nichts gefunden wurde. So können Sie Standardsymbole und dergleichen verwenden.
Welches kann als solches verwendet werden (Beispiel):
quelle
source
kann null sein undgetIdentifier()
stürzt in diesem Fall ab. Fügen Sie besser eine explizite Prüfung hinzu.Ich hatte das gleiche Problem und eine ziemlich saubere Lösung gefunden: Nach Html.fromHtml () können Sie eine AsyncTask ausführen, die alle Tags durchläuft, die Bilder abruft und sie dann anzeigt.
Hier finden Sie Code, den Sie verwenden können (der jedoch angepasst werden muss): https://gist.github.com/1190397
quelle
Ich habe Dave Webbs Antwort verwendet, sie aber etwas vereinfacht. Solange die Ressourcen-IDs in Ihrem Anwendungsfall zur Laufzeit gleich bleiben, müssen Sie nicht unbedingt Ihre eigene Klasse schreiben, um sie zu implementieren
Html.ImageGetter
und mit Quellzeichenfolgen herumzuspielen.Ich habe die Ressourcen-ID als Quellzeichenfolge verwendet:
und benutze es direkt:
quelle
Sie können auch einen eigenen Parser schreiben, um die URL aller Bilder abzurufen, dann dynamisch neue Bildansichten zu erstellen und die URLs zu übergeben.
quelle
Wenn Sie den Ersatz selbst vornehmen möchten, müssen Sie nach [] suchen.
Wenn Sie jedoch Eclipse verwenden, wird es ausflippen, wenn Sie diesen Buchstaben in eine [Ersetzen] -Anweisung eingeben, die Ihnen mitteilt, dass er mit Cp1252 in Konflikt steht - dies ist ein Eclipse-Fehler. Um das Problem zu beheben, gehen Sie zu
und auswählen
[UTF-8]
quelle
Für den Fall, dass jemand der Meinung ist, dass Ressourcen deklarativ sein müssen und die Verwendung von Spannable für mehrere Sprachen ein Chaos ist, habe ich eine benutzerdefinierte Ansicht erstellt
Verfolgen Sie ggf. Aktualisierungen unter https://gist.github.com/logcat/64234419a935f1effc67
quelle
KOTLIN
Es besteht auch die Möglichkeit zur Nutzung
sufficientlysecure.htmltextview.HtmlTextView
Verwenden Sie wie unten in Gradle-Dateien:
Projekt Gradle-Datei:
App Gradle-Datei:
In der XML-Datei ersetzen Sie Ihre Textansicht durch:
Die letzte Zeile oben ist, wenn Sie Bindungsadapter verwenden, deren Code wie folgt lautet:
Weitere Infos von der Github- Seite und ein großes Dankeschön an die Autoren !!!!!
quelle