Je me demande s'il existe de bonnes options pour mettre en place une éditeur de texte enrichi dans Android. Veuillez noter que je parle d'un éditeur de texte riche qui peut être utilisé dans une application Android, et non d'un éditeur intégré à une page web utilisant HTML et Javascript.
Mes exigences sont les suivantes :
- Mise en forme de base (couleur, polices de caractères, surbrillance, gras, italique, soulignement, etc.)
- Hyperliens
- Images en ligne
- Listes à puces et listes numérotées
- Tableau en ligne (seul le contenu d'une cellule est modifiable, pas la structure du tableau)
Comme vous pouvez le constater, il s'agit de quelque chose d'assez similaire à un contrôle RichEdit typique sous Windows.
Voici quelques efforts (investigation et prototypage) que j'ai faits jusqu'à présent :
Utilisation de WebView
J'ai essayé d'utiliser un contrôle WebView pour charger un fragment HTML avec un . Le contenu devient éditable et comme il s'agit de HTML, je suppose que cela peut répondre à la plupart de mes besoins. Mais il y a plusieurs problèmes :
- (mortel) Pas de curseur de texte. L'utilisateur n'aura aucune idée de l'endroit où seront insérés les caractères qu'il aura tapés.
- Le clavier virtuel à l'écran n'est pas visible par défaut. Il existe une astuce selon laquelle l'utilisateur doit appuyer longuement sur le bouton Menu pour faire apparaître le clavier. Mais je pense que c'est une très mauvaise expérience pour l'utilisateur. En outre, la disposition de l'écran n'est pas correctement réorganisée et le point d'insertion du texte est parfois couvert par le clavier.
Utilisation de EditText
J'ai essayé d'utiliser le contrôle EditText. Il semble prendre en charge un certain niveau d'édition de texte riche (couleur, polices, gras, italique, souligné, images en ligne, listes à puces). Mais je n'arrive toujours pas à comprendre comment mettre en œuvre les exigences suivantes :
- Contrôlez l'apparence du symbole de la balle (point, cercle, tiret, flèche, étoile, etc.).
- Liste numérotée (1., 2., 3., etc.)
- Tableau
BTW, j'ai vu qu'il existe plusieurs classes *Span, mais je ne suis pas sûr qu'elles puissent être d'une quelconque aide... Et le http://developer.Android.com ne fournit pas beaucoup d'informations utiles à leur sujet.
Alors, comment diable puis-je implémenter un éditeur de texte riche sur Android ? Puis-je étendre l'EditText et ajouter mes nouvelles fonctionnalités ? Ou dois-je faire quelque chose à partir de zéro - étendre la vue et tout mettre en œuvre par moi-même ? Pour la dernière option (extension de la vue), je ne sais même pas comment afficher un curseur de texte et le faire clignoter, sans parler du déplacement du curseur lorsque l'utilisateur tape.
Je suis désespéré maintenant... Des conseils ?
Merci !
-Tony
( EDIT )
Après quelques recherches supplémentaires, il semble que l'extension de EditText soit ma meilleure option. J'ai réussi à comprendre comment utiliser ces classes Span et je pense que je devrais être capable de réaliser la plupart des astuces en les utilisant (en les étendant).
Par exemple, l'extension de BulletSpan et le remplacement de drawLeadingMargin devraient me permettre de contrôler l'apparence des balles. L'extension de LeadingMarginSpan devrait m'aider pour les listes numérotées.
En ce qui concerne le tableau, mon plan initial est d'étendre la LineBackgroundSpan et de dessiner toutes les bordures du tableau dans la surcharge drawBackground. Cependant, je dois encore trouver comment disposer tout le texte dans les cellules du tableau et gérer correctement le mouvement et la sélection du curseur. Des suggestions ?
0 votes
Je regarderais celui de Commonsguy. Edit-A-Rama comme point de départ. Elle utilise un autre composant de son propre dépôt github - RichEditText.
3 votes
Vérifiez ceci nouvelle bibliothèque que je viens de télécharger, j'espère que ça vous aidera !
0 votes
Comment ajouter des données qui sont au format html à cette vue richeditor et je veux éditer la même date comment est-ce possible ?