Spanish [SOLUCIONADO] Mostrar 3 (...) puntos cuando el texto es demasiado largo

desof

Well-Known Member
Licensed User
Longtime User
Hola, como hago para mostrar un texto largo en una etiqueta y ya que el espacio es reducido quiero mostrar los 3 puntos y que no busque de adaptarse al contenido.

Afirmo lo que quiero con esta imagen

d50dyvfSL.png
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola Desof:

Una forma seria crear un bucle y dentro medir el ancho de todo el texto con canvas (MeasureStringWidth), esa medicion tendria que ser cogiendo una a una las letras del texto por la izquierda y si excede del ancho que tienes previsto sales y como tendras el texto a la izquierda que has medido, solo le tienes que añadir los tres puntos.
Esto lo mejor es crearlo en un Sub y pasarle los parametros que necesita MeasureStringWidth y que te devuelva el string.

Seria de tu ejemplo leer asi
r miro si excede del ancho, si no compruebo de nuevo
ro miro si excede del ancho, si no compruebo de nuevo
rot miro si excede del ancho, si no compruebo de nuevo
roti miro si excede del ancho, si no compruebo de nuevo
rotis miro si excede del ancho, si no compruebo de nuevo
....
....
rotiseria.ludipris excede el ancho, salgo del bucle y retorno ese estring, que si quieres ya puedes incluso añadirle los tres puntos.


Saludos
 

IdasI4A

Active Member
Licensed User
Longtime User
Tambien podrías probar con

B4X:
Sub Globals
    Dim Label1 AsLabel
End Sub

Sub Activity_Create(FirstTime As Boolean)
 Activity.LoadLayout(1)
 Label1.Text = "Este es un texto muy largo y mas largo"
 SetEllipsize(Label1, "END")
End Sub

Sub SetEllipsize(TextViewAsLabel, Mode AsString)
 Dim r AsReflector
 r.Target = TextView
 r.RunMethod2("setLines", 1, "java.lang.int")
 r.RunMethod2("setHorizontallyScrolling", True, "java.lang.boolean") 
 r.RunMethod2("setEllipsize", Mode, "android.text.TextUtils$TruncateAt")
End Sub
 

desof

Well-Known Member
Licensed User
Longtime User
Tambien podrías probar con

B4X:
Sub Globals
    Dim Label1 AsLabel
End Sub

Sub Activity_Create(FirstTime As Boolean)
Activity.LoadLayout(1)
Label1.Text = "Este es un texto muy largo y mas largo"
SetEllipsize(Label1, "END")
End Sub

Sub SetEllipsize(TextViewAsLabel, Mode AsString)
Dim r AsReflector
r.Target = TextView
r.RunMethod2("setLines", 1, "java.lang.int")
r.RunMethod2("setHorizontallyScrolling", True, "java.lang.boolean")
r.RunMethod2("setEllipsize", Mode, "android.text.TextUtils$TruncateAt")
End Sub

Y donde esta la Lib ?
AsReflector
 
Top