2016-10-27 1 views
0

Mon application doit fonctionner sur Android, iOS et WinPhone 8.1. Il a besoin d'avoir une page avec un long texte qui comprend un grand nombre de format:Xamarin Forms - WinPhone - Texte mis en forme

gras
liste balle
lien (http, mail, téléphone)

Parce qu'il doit fonctionner sur les 3 plates-formes, J'ai essayé de créer une chaîne HTML afin de l'envoyer à un WebView comme ceci:

MyWebView.Source = new HtmlWebViewSource {Html = stringHtml }; 

Je peux donc utiliser <b> pour Bolds, <ul> pour les listes de balles, <a> pour les liens. Comme j'ai besoin d'une police personnalisée et d'une taille spécifique, dans ma chaîne html il y a un nouveau style avec toutes ces informations.
Il fonctionne .... mais avec 2 problèmes sur Windows Phone:

  1. toute la liste à puces taille de la police sont vraiment plus petit que le reste du texte
  2. toutes les pages montrent une WebView vide, mais si je recharger (beaucoup de fois) ou attendre 3/4 secondes, puis il montre le contenu

Une idée à propos de ces problèmes?

Et s'il existe une autre solution différente de WebView ... c'est la bienvenue!

Répondre

0

Xamarin.Forms inclut une propriété FormattedText dans l'étiquette (ce guide devrait vous aider à le comprendre: Xamarin.Forms FormattedText). Mais il y a certaines choses que vous voulez faire cela ne peut se faire avec elle, et ceux-ci sont:

  • FormattedText n'a pas de liens, mais si je ne me trompe pas, si vous utilisez des liens dans une WebView , ils ne fonctionneront que dans cette WebView, de sorte que le lien sera ouvert dans le même espace que votre texte.
  • FormattedText n'a pas de liste à puces. Vous pouvez contourner ce problème en ajoutant le caractère de puce ASCII (dans Windows: maintenez ALT et appuyez sur le numéro 7) et certains espaces pour indenter le paragraphe.

Le reste de ce que vous voulez (gras, italique, changements de couleur, etc.) FormattedText a.

J'espère que ça aide! :)

+0

Les liens sont nécessaires pour moi. Et si vous utilisez "target =" _ blank "dans le tag, le site sera ouvert dans une nouvelle fenêtre du navigateur –