Mise en œuvre d'un éditeur de texte enrichi dans Android?

Je me demande s'il y a des bonnes options pour mettre en œuvre un éditeur de texte riche dans Android. Veuillez noter que je parle d'un riche éditeur de texte qui peut être utilisé dans une application Android, et non pas celui incorporé dans une page web à l'aide de HTML et de Javascript.

Mes besoins sont:

  • Mise en forme de base (couleurs, polices, mise en évidence, gras, italique, souligné, etc.)
  • Hyperliens
  • Images en ligne
  • Les listes à puces et des listes numérotées
  • Table en ligne (uniquement le contenu à l'intérieur d'une cellule est modifiable, pas la structure de la table)

Comme vous pouvez le voir, c'est assez beaucoup à quelque chose d'assez similaire à un type de contrôle RichEdit sur Windows.

Voici quelques efforts (enquête & prototypage), j'ai fait jusqu'à présent:

À L'Aide De WebView

J'ai essayé à l'aide d'une WebView contrôle de charger un fragment HTML avec un . Le contenu devient modifiable et comme il est en HTML, je suppose qu'il peut répondre à la plupart de mes besoins. Mais il a plusieurs problèmes:

  • (mortelle) Aucun signe d'insertion de texte. L'utilisateur n'aura aucune idée de l'endroit où ses caractères tapés sera inséré.
  • À l'écran un clavier virtuel n'est pas visible par défaut. Il y a un truc que l'utilisateur doit appuyer longtemps sur la touche Menu pour faire apparaître le clavier. Mais je pense que c'est une très mauvaise expérience utilisateur. En outre, la disposition de l'écran n'est pas correctement modifié et le texte de l'insertion de point parfois d'être couvert par le clavier.

À L'Aide De EditText

J'ai essayé d'utiliser le EditText de contrôle. Il semble soutenir un certain niveau de l'édition de texte riche (couleur, police, gras, italique, souligné, des images, des listes à puces). Mais je n'arrive toujours pas à comprendre comment je peux mettre en œuvre les exigences suivantes:

  • De contrôle de la appereance de la balle symbole (point, cercle, tableau de bord, des flèches, étoiles, etc.)
  • Liste numérotée (1., 2., 3., etc.)
  • Table

BTW, j'ai vu il y a plusieurs *Durée de classes là-bas, mais je ne suis pas sûr si elles peuvent être d'aucune aide... Et la http://developer.android.com ne fournissent pas beaucoup d'informations utiles à leur sujet.


Alors, comment diable puis-je mettre en œuvre un éditeur de texte riche sur Android?
Puis-je s'étend le EditText et ajouter mes nouvelles fonctionnalités? Ou dois-je faire quelque chose à partir de rien - s'étend de la Vue et de mettre en œuvre tout par moi-même? Pour plus tard option (extension de Vue), en fait, je ne sais même pas comment faire pour afficher un curseur de texte et des clignements d'yeux, de ne pas mentionging déplaçant le curseur de l'utilisateur à taper.

Je suis désespérée maintenant... un indice?

Merci!

-Tony


(MODIFIER)

Après une enquête, il semble comme l'extension de la EditText serait mon meilleur pari. J'ai un peu compris comment utiliser ces Durée de classes et suppose que je devrais être en mesure de faire la plupart des trucs en utilisant (extension) entre eux.

Par exemple, l'extension de la BulletSpan et dominante drawLeadingMargin devrait me donner le contrôle de la balle appereances. L'extension de la LeadingMarginSpan devrait m'aider sur la liste numérotée.

À la table, mon plan initial est d'étendre la LineBackgroundSpan et en tirer toutes les bordures de tableau dans la drawBackground remplacer. Cependant, j'ai encore besoin de comprendre comment la disposition de tous les le texte dans les cellules d'un tableau et de traiter correctement le signe du mouvement et de la sélection. Des Suggestions?

  • Je regarderais commonsguy du Edit-A-Rama la démo comme un point de départ. Il fait usage d'une autre composante de son propre dépôt github - RichEditText.
  • Cochez cette bibliothèque que je viens de téléchargé, j'espère que ça aide!
  • comment ajouter des données est au format html ce richeditor vue et je souhaite modifier le même jour comment il est possible
InformationsquelleAutor Tony Blues | 2010-11-26