Strawberry
Strawberry

Reputation: 119

Can I show an image from html in text view with Xamarin.Android?

I am trying to show an image from the html in the text view using Xamarin.Android. I have managed to show the html but can't get the picture to show. Any ideas are welcomed.

   Epub epub = new Epub(Android.OS.Environment.ExternalStorageDirectory.Path + "/Download/testBook.epub");

            //Get book title (Every epub file can have multiple titles)
            string title = epub.Title[0];

            //Get book authors (Every epub file can have multiple authors)
            string author = epub.Creator[0];

            //Get all book content as plain text
            string plainText = epub.GetContentAsPlainText();

            //Get all book content as html text
            string htmlText = epub.GetContentAsHtml();

            //Get some part of book content
            ContentData contentData = epub.Content[0] as ContentData;

            //Get Table Of Contents (TOC)
            List<NavPoint> navPoints = epub.TOC;

            String text = String.Format("<!DOCTYPE html PUBLIC \"-//IETF//DTD HTML 2.0//EN\">\n<HTML>\n   <HEAD>\n      <TITLE>\n         A Small Hello \n      </TITLE>\n   </HEAD>\n<BODY>\n   <H1>Hi</H1>\n   <P style=\"color: red\">This is very minimal \"hello world\" HTML document.</P> \n</BODY>\n</HTML>");

            ePubEditText.CustomSelectionActionModeCallback = new CustomSelectionMenu(this);

            ePubEditText.TextFormatted = Html.FromHtml(htmlText);

Upvotes: 1

Views: 1266

Answers (1)

SushiHangover
SushiHangover

Reputation: 74174

Android TextView's are not designed to display content like that.

If you replace your TextView with a WebView you can load content in the "browser" from a string, a local page bundled in your app and of course a remote web page:

String text = String.Format("<!DOCTYPE html PUBLIC \"-//IETF//DTD HTML 2.0//EN\">\n<HTML>\n   <HEAD>\n      <TITLE>\n         A Small Hello \n      </TITLE>\n   </HEAD>\n<BODY>\n   <H1>Hi</H1>\n   <P style=\"color: red\">This is very minimal \"hello world\" HTML document.</P> \n</BODY>\n</HTML>");
var webViewString = FindViewById<WebView>(Resource.Id.webViewString);
webViewString.LoadData(text, "text/html", null);

var webViewLocalPage = FindViewById<WebView>(Resource.Id.webViewLocalPage);
webViewLocalPage.LoadUrl("file:///android_asset/HTML/index.html");

enter image description here

Xamarin: Load Local Content

Upvotes: 1

Related Questions