Red de conocimiento informático - Material del sitio web - Cómo implementar un componente de editor de texto enriquecido para Android

Cómo implementar un componente de editor de texto enriquecido para Android

Hay tres formas de implementar un editor de texto enriquecido en Android:

Utilizar múltiples diseños, cada uno de los cuales corresponde a un formato HTML, como imágenes, listas secuenciales, etc. Consulte este enlace para ver un ejemplo de implementación. Los editores de texto enriquecido de Medium y

Evernote se implementan de esta manera. En general, este enfoque es un poco más complicado.

Implementación de JavaScript WebView. Hay muchas bibliotecas maduras de edición de texto enriquecido de JavaScript en Internet, como Squire, y solo necesita realizar la interacción entre

WebView y JavaScript (y escribir devoluciones de llamada). Esto es correcto en teoría, pero durante la implementación, es necesario resolver problemas de compatibilidad con WebView (

El kernel de Android 4.4 y superiores es diferente de WebView 4.4 y anteriores) y otros problemas imprevistos (por ejemplo, no se puede pegar texto). ).

EditarTextSpan. TextView de Android admite de forma nativa espacios como negrita, tachado, comillas, etc.

Para lograr requisitos simples de edición de texto enriquecido, la operatividad sigue siendo relativamente grande. Después de considerarlo un poco, elegí este enfoque para satisfacer mis necesidades.

Ahora que hemos decidido utilizar el método EditText Span, debemos comprender la API relacionada.

Primero, aprendamos sobre Span. Span es un concepto poderoso y si estás interesado en aprender más sobre él, te recomendamos leer esta traducción.

Aquí se utilizan dos tipos principales de Span:

Los Span heredados de CharacterStyle (como StyleSpan) pueden agregar negrita, subrayado, etc. a nivel de carácter.

Los intervalos que heredan de ParagraphStyle (como QuoteSpan) pueden agregar comillas al texto a nivel de párrafo.

En este momento, necesita una estructura de texto que pueda establecer el efecto Span (es decir, implementar la interfaz SpannableStringBuilder

es una buena opción, y getEditableText()). El método proporcionado por EditText también se puede obtener. Este efecto. Por lo general, bastará con getEditableText()

, pero cuando te enfrentes a algunos detalles, puedes usar SpannableStringBuilder para preestablecer el intervalo correspondiente y luego reemplazarlo con el texto original.

El método para configurar Span también es muy simple. Debe llamar a Spannable.setSpan(Object what, int start, int end, int

hay cuatro banderas). método. Los parámetros se explican a continuación:

Objeto qué, pase el objeto Span que está utilizando. El objeto Span que estás utilizando.

int start, establece la posición inicial de Span.

int end, establece la posición final de Span.

banderas int, utilizadas para establecer el alcance de Span.

Aquí enfatizamos el parámetro int flags, que acepta 4 tipos de parámetros, a saber:

Spanned.SPAN_INCLUSIVE_EXCLUSIVE, lo que significa que usted ingresa texto antes de configurar el rango de Span, y enter El texto de también se verá afectado por Span

.

Spanned.SPAN_INCLUSIVE_INCLUSIVE, lo que significa que si ingresa texto antes o después de establecer el rango de intervalo, el texto ingresado también se verá afectado por el intervalo

.

Spanned.SPAN_EXCLUSIVE_EXCLUSIVE, lo que significa que si ingresa texto dentro o fuera del área donde se establece el Span, el texto se verá afectado por el Span

.

Spanned.SPAN_EXCLUSIVE_INCLUSIVE, lo que significa que si ingresa texto después de configurar la región Span, el texto también se verá afectado por Span

.