Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Prevenir salto de línea en TextView

En mi aplicación de Android tengo una vista de texto que muestra texto que contiene caracteres especiales. El TextView de alguna manera rompe automáticamente las cadenas en los caracteres '/' y '-'.

Por ejemplo, la cadena "aaaaaaa / bbb-ccccc / ddd" se muestra como

aaaaaaa/ bbb- ccccc/ ddd 

Sin embargo, me gustaría mostrarlo sin ningún tipo de salto de línea excepto el que está en los límites de la vista, es decir, como esto:

 aaaaaaa/bb bb-ccccc/d dd 

¿Hay alguna forma de desactivar los saltos de línea automáticos o de escapar de estos caracteres? Ya he intentado escapar con \ uFEFF sin éxito.

  • InputType = PersonName?
  • Palabra que se puede hacer clic en TextView en android
  • ¿Cómo puedo mostrar caracteres especiales (como & ndash;) en TextView?
  • Restablecer Android textview maxlines
  • Convertir píxeles en sp
  • Cómo cambiar el texto en Android TextView
  • Android: ellipsize end - Caracteres adicionales después de la elipse
  • Actualizar Android TextView
  • 7 Solutions collect form web for “Prevenir salto de línea en TextView”

    Mantenga su atributo textview

     android:layout_width="wrap_content" android:layout_height="wrap_content" 

    Definir la cadena en string.xml

     <string name="Username"> aaaaaaa\/bb\nbb\-ccccc\/d\ndd</string> 

    Tal vez esta es una solución: https://stackoverflow.com/a/22337074/3472905

    He añadido la barra como se mencionó:

     public class WordBreakTransformationMethod extends ReplacementTransformationMethod { private static WordBreakTransformationMethod instance; private WordBreakTransformationMethod() {} public static WordBreakTransformationMethod getInstance() { if (instance == null) { instance = new WordBreakTransformationMethod(); } return instance; } private static char[] dash = new char[]{'-', '\u2011'}; private static char[] space = new char[]{' ', '\u00A0'}; private static char[] slash = new char[]{'/', '\u2215'}; private static char[] original = new char[]{dash[0], space[0], slash[0]}; private static char[] replacement = new char[]{dash[1], space[1], slash[1]}; @Override protected char[] getOriginal() { return original; } @Override protected char[] getReplacement() { return replacement; } } 

    Probablemente puede utilizar el atributo Lines o su método de contraparte setLines (int)

    No hay una solución lista y no hay nada como "ajustar texto por letras en TextView" la única manera de hacerlo de una buena manera es ampliar TextView y modificar BreakText de la pintura (String text, boolean measureForwards, float maxWidth, float [] measuredWidth) función.

    Además, puede calcular el tamaño de TextView en píxeles, calcular el ancho de una letra en píxeles, a continuación, encontrar el número de letras (X) que caben en una línea y luego insertar linebreak después de cada X letras

    He probado el código siguiente. Incluso puede convertirlo en una función:

      String specialString = "a/b/-c/dd"; String[] specialArray = specialString.split("/"); String str = ""; for(int i = 0; i < specialArray.length - 1; i++){ str = str + specialArray[i] + Character.toString((char) 47); } str = str + specialArray[specialArray.length - 1]; specialArray = str.split("-"); str = ""; for(int i = 0; i < specialArray.length - 1; i++){ str = str + specialArray[i] + Character.toString((char) 45); } str = str + specialArray[specialArray.length - 1]; textView.setText(str); 

    Ahora el texto no escapa

    Puede probar esto: "aaaaaaa" + "/" + "bbb-ccccc" + "/" + "ddd"

    Puede calcular el tamaño de un texto de esta manera:

     String text = "This is my text"; Paint textPaint = new Paint(Paint.ANTI_ALIAS_FLAG); textPaint.setTextSize(14.0f); Rect bounds = new Rect(); textPaint.getTextBounds(text, 0, text.length(), bounds); bounds.width() // width in pixels bounds.height() // height in pixels 

    Basándose en estos valores, puede romper el texto en pedazos e insertar caracteres de nueva línea.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.