right - Guiones en Android
react native text onclick (6)
Como parte de la internacionalización de una aplicación de Android, me he encontrado con la necesidad de ajustar de forma dinámica las palabras o guiones en la posición correcta.
Todas mis cadenas se han externalizado en archivos strings.xml, pero no he encontrado ninguna documentación sobre separación silábica en Android.
Me gustaría poder sugerir posiciones de separación de palabras similares a cómo puedo hacerlo en LaTeX:
http://en.wikipedia.org/wiki/Hyphenation_algorithm
pero no han encontrado ninguna indicación si esto es posible? ¿Hay algo en el marco que me he perdido? ¿Qué están haciendo otras personas, por ejemplo, con cadenas japonesas que no tienen una posición obvia para romper una oración? ¿Acabas de agregar espacios en las posiciones correctas?
Podría dimensionar dinámicamente la fuente para que se ajuste a ciertos diseños, pero para mensajes más largos que atraviesen varias líneas que no funcionarán. ¿Qué hacer?
Es algo nuevo de Android 6 Marshmellow.
Intenta agregar esto a tu TextView xml
android:hyphenationFrequency="none"
La administración de saltos de línea puede ser una molestia. La mejor opción es usar caracteres de control de modificador de salto de línea UTF ya que android admite UTF completo
Sé que alguien mencionó "soft-hyphen", pero hay bastantes más.
También puede usar el "Espacio de ancho cero" entre palabras en idiomas que carecen de espacios para que no tenga que depender de la interpretación del diccionario. También puede usar esto como un guión suave en los idiomas que permiten la rotura de ciertas palabras sobre líneas en ciertos puntos.
Cuando utilice una palabra compuesta que no desea que se rompa, pero desea que el sistema Text To Speech la reconozca correctamente, debe usar el carácter "Word Separator". No utilice "Espacio sin interrupción de ancho cero" ya que ha quedado en desuso debido a su uso como lista de materiales.
Finalmente, si quiere un espacio pero no quiere un salto de línea, use un espacio simple sin interrupciones.
La pregunta es vieja, pero acabo de encontrar la mejor solución para mí:
Tengo que decir que estoy programando en Xamarin, por lo que el código está en C #, pero no debería ser un problema para portarlo a Java.
Usé la lógica de NHyphenator ( https://github.com/alkozko/NHyphenator ) para insertar SoftHyphens (símbolo UTF8 - 0x00AD) para que la vista de texto haga la separación silábica en el lugar correcto.
Para obtener Hyphenation para otros idiomas, utilicé los diccionarios de OpenOffice. por ejemplo, tuve que obtener Hyphenation para el idioma alemán suizo
http://extensions.openoffice.org/en/search?f[0]=field_project_tags%3A157 1. Descargue la extensión 2. Descomprímala con winrar u otra cosa 3. Copie el archivo hyph_xx_xx / hyph_xx_xx.dic 4. Agregue un nuevo Lenguaje a la clase Hyphenator
Los archivos de recursos de NHyphernator se declaran como: hyph-xx-xx.pat.txt -> contenido del archivo dic sin comentarios hyph-xx-xx.hyp.txt -> archivo que contiene excepciones de palabras donde la lógica para el uso de guiones no dar resultados correctos
Si alguien quiere que la biblioteca portátil de Xamarin solo lo diga, puedo subirlo.
EDITAR:
La estrategia de interrupción debe establecerse en Equilibrado en TExtview. Nivel de API> 23; de lo contrario, no utilice la estrategia de salto.
EDITAR:
Aquí está el código mono / xamarin: https://github.com/sma84/NHyphenator-Mono
La siguiente biblioteca admite la separación silábica. Realiza todos los tipos de alineación de texto (izquierda / derecha / centro / justificada) y separación silábica para usted. No se han agregado todos los idiomas, pero se pueden agregar según sea necesario. Esta biblioteca no usa WEBVIEWS ni SUPPORTABLE SPANNABLES y permite LONG TEXT .
BIBLIOTECA : https://github.com/bluejamesbond/TextJustify-Android
ANDROID : 2.2 a 5.X
PREPARAR
DocumentView documentView = addDocumentView(new StringBuilder("Your long text content"), DocumentView.PLAIN_TEXT);
documentView.getDocumentLayoutParams().setTextAlignment(TextAlignment.JUSTIFIED);
documentView.getDocumentLayoutParams().setHyphenator(new Hyphenator(HyphenPattern.PT));
documentView.getDocumentLayoutParams().setHyphenated(true);
setEllipsize puede ser útil, si this error aún está solucionado.
en.wikipedia.org/wiki/Soft_hyphen funcionó en un dispositivo Samsung Galaxy a partir de Android 4.3.
<!-- key combination to enter soft hyphen: [Alt Gr]+[-] or [Alt]+240 on German PC, see https://de.wikipedia.org/wiki/Weiches_Trennzeichen#Darstellung_auf_Computersystemen -->
<string name="no_connection">Nicht ver-bund-en</string>
Como mi caso de uso era bastante limitado, utilicé un guión suave en la palabra "verbunden". El Unicode / u00ad no tuvo ningún efecto.